Почему я должен использовать LabelFor в MVC?

Почему я должен использовать LabelFor вместо <label>?

например.

@Html.LabelFor(model => model.FirstName)
@Html.DisplayFor(model => model.FirstName)

против

<label for="FirstName">First Name</label>
@Html.DisplayFor(model => model.FirstName)

В дополнение к вышесказанному, @ps wg рассмотрел СУХОЙ аспект этого вопроса. Я также хотел бы знать, помогает ли это с локализацией. то есть. Различные метки в зависимости от текущей настройки языка.

2 ответа

Решение

Хорошо, если вы украсили свои модели DisplayNameAttributeкак это:

[DisplayName("First Name")]
string FirstName { get; set; }

Тогда вы только указываете, какой текст метки будет в одном месте. Возможно, вам придется создать похожую метку в нескольких местах, и если вам когда-нибудь понадобится изменить текст метки, было бы удобно сделать это только один раз.

Это еще более важно, если вы хотите локализовать ваше приложение для разных языков, что вы можете сделать с помощью DisplayAttribute:

[Display(Name = "FirstNameLabel", ResourceType = typeof(MyResources))]
string FirstName { get; set; }

Это также означает, что у вас будут более строгие представления. Это очень просто "FirstName" если вам приходится много печатать, но использование вспомогательного метода позволит компилятору отлавливать такие ошибки большую часть времени.

LabelFor позволяет вам контролировать все из вашей модели представления, не беспокоясь о контроле.

Допустим, вы используете одну и ту же модель представления в 2 местах, это означает, что вы можете изменить имя в одном месте, чтобы обновить все элементы управления.

Не нужно использовать, но у него есть свои применения.

Другие вопросы по тегам