2010-11-12 82 views
5

短,一个空字符串覆盖ViewData.TemplateInfo.HtmlFieldPrefix,有没有一种方法来保持前缀从未来通过对一组嵌套的强类型EditorFor或DisplayFor助手通话吗?嵌套EditorFor/DisplayFor覆盖字段名称

这里的丑陋的标记/代码到目前为止,我的工作:

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

我已经试过*对于超载,允许指定htmlFieldName但只改变眼前的水平。如果我在该呼叫的位置有一个前缀,我只需更改附加到前缀的内容。

我可以手工编写模板标记,但这样做的SelectList对象好像我最终只会复制在MVC源与单一的调整,因为它涉及对象数据绑定逻辑。

回答

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)%> 

应该使用这个名字。

[希望我这样做是正确的内存。 :)]

这里的MSDN链接:如果 http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayattribute.displayattribute.aspx

+1

我正在寻找一种方式来覆盖在HTML字段的ID属性前缀(用于模型回程结合),而不是它的面向用户的显示名称。 – patridge 2011-10-13 14:36:59

0

不知道我理解你的问题,但是,如果你使“子”的意见,然后该字段将不会为前缀的谐音,而不是EditorFor。