HttpPostedFileBase编辑器,用于与EditorForModel一起使用

时间:2011-01-27 00:28:03

标签: asp.net-mvc

好吧,也许我错过了一些东西,但我无法弄明白。使用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生成文件输入字段?

2 个答案:

答案 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)也适用于您。