2011-01-27 69 views
1

好吧,也許我錯過了一些東西,但我無法弄清楚這一點。使用ASP.NET MVC 3,Razor視圖。HttpPostedFileBase編輯器使用EditorForModel

我有一個這樣的模型對象:

public class MyModel 
{ 
    public HttpPostedFileBase File { get; set; } 
    public string Title { get;set; } 
    public string Description { get; set; } 
} 

當在強類型視圖,我請@ Html.EditorForModel(),它僅產生標題和描述的表單字段。

我創建了文件:視圖\共享\ EditorTemplates \ HttpPostedFileBase.cshtml,虛擬內容,但它仍然不會呈現。

是否可以讓EditorForModel生成文件輸入字段?

回答

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()爲模型的每個屬性。我不知道這是否是一個好的解決方案,但它現在起作用。

0

我有investigated一個類似的問題 - 複雜屬性的編輯器不輸出。您的情況可能會有所不同,但我發現的解決方法(爲您的模型創建編輯器 - Model.ascx)也適用於您。

+0

我不想爲每個有文件輸入的模型創建一個視圖,因爲我在我的應用程序中會有一些。 – 2011-01-27 02:40:22