Я знаю, что это не совсем ответ на ваш вопрос, но, поскольку я все еще хочу предложить план действий, я опубликую его так, а не в комментарии.
Вы уверены, что хотите это?
Если вам удастся сделать это, вы установите для метку поля какое-то значение на основена его тип .На первый взгляд это может показаться заманчивым - вы можете сэкономить несколько нажатий клавиш здесь и там.
Но что произойдет, если, например, у вас есть тип Address
, содержащий некоторые свойства для названия улицы, номера, почтового индексаи т.д., а затем хотите, чтобы пользователь заполнил домашний адрес и рабочий адрес в одной и той же форме - как бы вы пометили их по-разному и все еще использовали один и тот же тип?И что еще хуже - вы действительно хотите, чтобы на всех ваших струнах был один и тот же ярлык?Чтобы избежать этих двух сценариев, вам все равно придется прибегнуть к Html.DisplayFor(m => m.PropertyName, "TemplateName")
, что означает, что вы будете в такой же жалкой ситуации, как и сейчас.Кроме того, у вас будет как минимум два места, в которых вам нужно искать правильную логику отображения для вашего ярлыка, а не только одно.
Помните, что нет абсолютного требования использовать LabelFor()
помощник -вы также можете просто накатить свой собственный метод расширения на HtmlHelper
или даже проигнорировать их и вывести плоскость HTML:
<label for="Person_HomeAddress">Home address</label> <!-- the ID might be wrong -->
<%: Html.EditorFor(m => m.HomeAddress) %>
Поскольку EditorFor()
выводит идентификатор, соответствующий имени модели иИмена свойств, все будет в порядке.