代码之家  ›  专栏  ›  技术社区  ›  patridge jonathanpeppers

嵌套编辑器for/DisplayFor覆盖字段名

  •  5
  • patridge jonathanpeppers  · 技术社区  · 15 年前

    缺少覆盖 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 回复  |  直到 15 年前
        1
  •  0
  •   Michael Kennedy    15 年前

    如果视图模型上有属性,而不是直接在模型上执行下拉列表,则可以在其上放置DataAnnation属性。

    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

        2
  •  0
  •   MarkG    13 年前

    不确定我是否理解您的问题,但是,如果您将“子”视图呈现为partials,而不是EditorFor,那么字段将不会加前缀。