#asp.net-mvc #asp.net-mvc-3 #razor
#asp.net-mvc #asp.net-mvc-3 #razor
Вопрос:
Интересно, возможно ли отредактировать значение атрибутов, которое @Html.EditorFor(модель => элемент.Заголовок) генерирует
@Html.EditorFor(модель => элемент.Заголовок) сгенерировал бы это:
<input class="text-box single-line" id="item_Title" name="item.Title" type="text" value="Avatar" />
интересно, возможно ли отредактировать атрибут id?
Спасибо!
Ответ №1:
Я не думаю, что вы можете редактировать идентификатор, поскольку смысл EditorFor в том, что он «привязан» к свойству модели, к которому вы его применяете. Если вам нужен другой идентификатор, вы могли бы попробовать создать свое собственное текстовое поле с помощью Html.TextBox
.
Комментарии:
1. Я думал, что к свойству привязано имя, а не идентификатор. (Одна из причин, по которой вы не можете легко изменить имя при использовании чего-то вроде Html.TextBoxFor, но вы можете изменить идентификатор.)
2. Это связано с обоими. Вот как он может обновить вашу модель, потому что для этого требуется определенный идентификатор. Зачем вам нужно менять идентификатор текстового поля? Может быть, есть способ сделать то, что вы пытаетесь сделать, не изменяя его?
3. Ага. Если это так, я внезапно очень запутался, почему я смог изменить свои идентификаторы вспомогательных методов (хотя … не «EditorFor») и привязка все еще работает.
Ответ №2:
Создайте свой собственный шаблон редактора для пользовательского рендеринга всего, что вы хотите. Смотрите: http://www.codecapers.com/post/Display-and-Editor-Templates-in-ASPNET-MVC-2.aspx Затем вы получаете контроль над тем, как генерируется HTML-код редактора. возможно, вам все же придется немного поработать с лямбда-синтаксическим анализом, чтобы получить имя переменной модели. Мне пришлось бы исследовать это подробнее — просто хотел дать указатель здесь на случай, если никто другой не ответил.
Однако в этом случае вам «ВОЗМОЖНО» придется вместо этого написать свой собственный метод расширения, который принимает лямбда-выражение и создает имена на основе этого лямбда-выражения. Вы можете увидеть, как анализируется лямбда-выражение, в качестве примера здесь: http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Creating-tooltips-using-data-annotations-in-ASPNET-MVC.aspx
все это может оказаться не слишком полезным.. но хочу предоставить хотя бы что-то еще : )