2010-11-12 83 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。