如果没有用空字符串覆盖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 over,允许指定htmlFieldName
,但这只会改变直接级别。如果我在该调用点有一个前缀,我只需更改附加到前缀的内容。
我可以手工编写模板标记,但对SelectList
对象这样做似乎我只会通过一次调整来复制MVC源,因为它涉及对象数据绑定逻辑。
答案 0 :(得分:0)
如果视图模型上有属性,而不是直接在模型上执行下拉列表,则可以在其上放置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)%>
应该使用该名称。
[希望我从记忆中得到它。 :)]
答案 1 :(得分:0)
不确定我是否理解您的问题,但是,如果您将“子”视图渲染为局部而不是编辑器,那么这些字段将不会被添加前缀。