2011-07-15 47 views
0

前段時間我asked關於自定義模板的問題。 我找到解決方案使用自定義模板不強類型視圖(double類型屬性):再次關於自定義模板

@{ 
    string id = ViewData.TemplateInfo.GetFullHtmlFieldId(""); 
    string name = ViewData.TemplateInfo.GetFullHtmlFieldName(""); 
    string value = string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0}", ViewData.ModelMetadata.Model); 
} 
<input type="text" id="@id" name="@name" value="@value" /> 

但我不能找到從TemplateInfo方法如何獲取姓名和身份證信息?如果屬性是複雜類型的對象,我應該傳遞給他們什麼參數?

回答

1

他們默認爲HtmlFieldPrefix

public string GetFullHtmlFieldName(string partialFieldName) 
{ 
    return (this.HtmlFieldPrefix + "." + (partialFieldName ?? string.Empty)).Trim(new char[] { '.' }); 
} 


public string GetFullHtmlFieldId(string partialFieldName) 
{ 
    return HtmlHelper.GenerateIdFromName(this.GetFullHtmlFieldName(partialFieldName)); 
} 

內,您的局部視圖,你甚至可以設置HtmlFieldPrefix的東西從您的視圖模型

ViewData.TemplateInfo.HtmlFieldPrefix = Model.MyPrefix; // MOdel refers to your view model instance 

相關提示,看看這裏:http://btburnett.com/2011/03/correcting-mvc-3-editorfor-template-field-names-when-using-collections.html

+0

感謝您的回答! 你能解釋一下,HtmlFieldPrefix的用途是什麼?如果可能,例如:-) – Boo

+0

既然你問過例子,這裏有一篇很棒的文章:http://davybrion.com/blog/2011/01/prefixing-input-elements-of-partial-views-with-asp -net-MVC / – Mrchief