Asp.net-Mvc
帶有 UIHint 的 ASP.NET MVC 3 自定義顯示模板 - 需要 For 循環嗎?
如果我有這樣的ViewModel:
public class MyViewModel { [UIHint("SomeTemplate")] public ICollection<SomeViewModel> Submodel { get; set; } }還有一個帶有這樣一行 HTML的強類型視圖:
@Html.DisplayFor(model => model.Submodel)還有一個帶有這樣簽名的顯示模板:
@model MvcApplication1.Models.SomeViewModel我收到一條錯誤消息,提示“模型項是類型
List<SomeViewModel>,但此字典需要類型的模型SomeViewModel。”。這是有道理的,但我希望 MVC 的內置模板智能能夠發揮作用,看到它是一個
IEnumerable東西,並努力呼叫我的模板 N 次,就像它通常在Html.DisplayFor沒有提示的情況下所做的那樣。所以它看起來像
[UIHint]覆蓋了那個功能?顯然,我可以指向另一個接受集合和呼叫的模板
Html.DisplayForModel(),基本上模擬 MVC 智能。但我希望避免這種情況。老實說,我寧願做一個 foreach 循環,也不願擁有那 1 行“包裝器”模板。有更好的想法嗎?
就像我想說:“嘿 MVC,為這些人中的每個人渲染一個模板。但不是使用名稱約定來查找模板,這裡有一個提示”。
UIHint 的意思是“使用名為 XXX 的模板渲染這個模型”。所以你必須聲明你的顯示模板“SomeTemplate”
@model MvcApplication1.Models.ICollection<SomeViewModel>並在 foreach 中顯示每個項目。
另一種方法是傳遞字元串模板名稱,如下所示
@Html.DisplayFor(model => model.Submodel, "SomeTemplate")