LabelFor
не использует шаблоны. Он жестко закодирован в исходном коде MVC и выдает <label>
независимо от того, что вы делаете.
Вам нужно написать собственный помощник html, если вы хотите изменить это поведение.
С другой стороны, если вы хотите использовать шаблоны, вы должны использовать помощники EditorFor / DisplayFor. Таким образом, поскольку метка предназначена для отображения, вы можете использовать шаблон отображения и вместо Html.LabelFor(x => x.Foo)
использовать Html.DisplayFor(x => x.Foo)
. Что касается пользовательского шаблона, то вы либо украшаете свойство Foo
с атрибутом [UIHint]
, либо передаете его в качестве второго аргумента помощнику DisplayFor
.
UPDATE:
Согласно вашему комментарию вы не пытаетесь изменить разметку, а только значение. Вот для чего можно использовать второй аргумент помощника LabelFor:
@Html.LabelFor(x => x.Foo, Model.Key)
@Html.EditorFor(x => x.Foo)
При этом создается метка, связанная с вводом Foo (атрибут for
метки назначен правильно), но показан текст, соответствующий свойству Key
в модели представления.