我想对视图模型中包含的列表中的每个复杂元素使用UIHint。我目前可以使用@Html.DisplayFor(a => a.ContentElements[0], "MYContent")
,但想将提示移到实际的视图模型中,而不是在Html.DisplayFor帮助器中。按原样构建的视图模型是否可以实现?
我的视图模型:
public class MyViewModel
{
public int PageId { get; set; }
public IList<ContentElement> ContentElements { get; set; }
}
我的复杂元素:
public class ContentElement
{
public int ContentId { get; set; }
public string Content { get; set; }
}
MYContent模板:
@model ContentElement
@if (HttpContext.Current.IsDebuggingEnabled){
<span>@Model.ContentId</span>
}
@Html.Raw(Model.Content)
答案 0 :(得分:1)
在这种情况下,没有理由使用[UIHint]
(如果这样做,则需要将模板更改为使用@model List<ContentElement>
)。只需要将模板命名为ContentElement.cshtml
(以匹配类的名称),然后将其放置在/Views/Shared/DisplayTemplates
(或/Views/{ControllerName}/DisplayTemplates
)文件夹中,然后在视图中使用
@Html.DisplayFor(m => m.ContentElements)
但是,如果您确实想使用[UIHint]
,则可以将其应用于ContentElements
属性
public class MyViewModel
{
public int PageId { get; set; }
[UIHint("MYContent")]
public IList<ContentElement> ContentElements { get; set; }
}
但是因为ContentElements
是List<ContentElement>
,那么这意味着模板中的模型必须是@model List<ContentElement>
(而不是@model ContentElement
)