好吧,也许我错过了一些东西,但我无法弄明白。使用ASP.NET MVC 3,Razor查看。
我有一个这样的模型对象:
public class MyModel
{
public HttpPostedFileBase File { get; set; }
public string Title { get;set; }
public string Description { get; set; }
}
在强类型视图中,当我调用@ Html.EditorForModel()时,它只生成标题和描述表单字段。
我创建了文件:Views \ Shared \ EditorTemplates \ HttpPostedFileBase.cshtml,带有虚拟内容,但仍然无法渲染。
是否可以让EditorForModel生成文件输入字段?
答案 0 :(得分:2)
我设法通过创建自定义Object.cshtml
编辑器模板来实现它:
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForEdit && !ViewData.TemplateInfo.Visited(pm)))
{
if (prop.HideSurroundingHtml)
{
@Html.Editor(prop.PropertyName)
}
else
{
<div class="editor-container">
<div class="editor-label">
@Html.Label(prop.PropertyName, prop.DisplayName)
</div>
<div class="editor-field">
@Html.Editor(prop.PropertyName, prop.TemplateHint)
@Html.ValidationMessage(prop.PropertyName, "*")
</div>
</div>
}
}
基本上它为模型的每个属性调用Html.Editor()
。我不知道这是否是一个很好的解决方案,但它现在有效。
答案 1 :(得分:0)
我有investigated类似的问题 - 不输出复杂属性的编辑器。您的情况可能有所不同,但我找到的解决方法(为您的模型创建编辑器 - Model.ascx)也适用于您。