Вложенное имя поля EditorFor / DisplayFor override - PullRequest
5 голосов
/ 12 ноября 2010

Если не считать переопределения ViewData.TemplateInfo.HtmlFieldPrefix с пустой строкой, есть ли способ предотвратить появление префикса во вложенном наборе строго типизированных вызовов помощника EditorFor или DisplayFor?

Вот уродливая разметка /код, который я до сих пор работал:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<System.Web.Mvc.SelectList>" %>
<% ViewData.TemplateInfo.HtmlFieldPrefix = ""; %>
<%=Html.DropDownList("sort", Model)%>

Я пробовал * For перегрузку, которая позволяет указать htmlFieldName, но это только изменяет непосредственный уровень.Если у меня есть префикс в точке этого вызова, я просто изменяю то, что добавляется к префиксу.

Я мог бы написать разметку шаблона вручную, но при этом для объекта SelectList кажется, что я будупросто завершите копирование источника MVC с помощью одной настройки, поскольку она включает логику привязки данных объекта.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2012

Не уверен, что я понимаю ваш вопрос, но если вы отобразите «дочерние» представления как частичные вместо EditorFor, тогда поля не будут иметь префикс.

0 голосов
/ 27 мая 2011

Если у вас есть свойство в модели представления, а не просто выпадающий список непосредственно в модели, вы можете поместить в него атрибут DataAnnontation.

public class MyModel
{
   [Display(Name="Your Favorite Choices")]
   public string[] Choices {get; set;}
}

, затем в своем коде

<%= Html.LableFor(m => m.Choices) %><br />
<%=Html.DropDownList("sort", Model.Choices)%>

Следует использовать это имя.

[Надеюсь, я понял это по памяти.:)]

Вот ссылка MSDN: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute.displayattribute.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...