有些时候我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的方法如何获取名称和ID的信息?如果属性是复杂类型的对象,我应该传递给它们的参数是什么?
答案 0 :(得分: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