2011-07-15 42 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