2011-10-26 56 views
1

我有一個屬性在我VIEWMODEUIHint不適用於IList?

[UIHint("FileUpload")] 
public IList<string> Images { get; set; } 

鑑於Create.cshtml

@html.ValidationSummary(true) 
@html.EditorForModel() 

在文件夾Shared/EditorTemplates/FileUpload.cshtml

<h3>Test</h3> 

但不顯示領域。簡單地說,沒有反應!

我做了另一種類型的字段的相同的測試和它的工作:

[UIHint("FileUpload")] 
public string Test { get; set; } 

出了什麼問題? 你如何解決這個問題?

如果我手動添加下面的代碼在我的Create.cshtml視圖,它的工作原理!

@Html.EditorFor(m => m.Images) 

我不知道該怎麼做。

回答

2

是的,UIHint不適用於列表。您需要在相應的編輯器模板(~/Views/Shared/EditorTemplates/FileUpload.cshtml)內部有一個循環。 UIHint模板被傳遞給模型,在這種情況下是IList<string>

@model IList<string> 
@foreach (var item in Model) 
{ 
    ... 
} 
+0

但是,爲什麼如果我手動將代碼'@ Html.EditorFor(m => m.Images)'在視圖上工作!?我認爲問題不在'UIHint',而是'@ Html.EditorForModel();'否則代碼'@ Html.EditorFor(m => m.Images)'不會工作 – ridermansb

+1

@RidermandeSousaBarbosa,如果你使用' @ Html.EditorForModel()''你可以爲給定的視圖模型('〜/ Views/Shared/EditorTemplates/MyViewModel.cshtml')定義一個自定義編輯器模板,你可以在其中使用'@ Html.EditorFor(m => m.Images )'。實際上,EditorForModel可能不會遞歸到子編輯器模板中。 –

相關問題