C# 在复杂对象列表上使用UIHint注释?

C# 在复杂对象列表上使用UIHint注释?,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,我想对视图模型中包含的列表中的每个复杂元素使用UIHint。我目前可以使用@Html.DisplayFor(a=>a.ContentElements[0],“MYContent”),但希望将提示移动到实际的视图模型中,而不是在Html.DisplayFor帮助器中。在视图模型按原样构造的情况下,这是否可行 我的视图模型: public class MyViewModel { public int PageId { get; set; } public IList<Cont

我想对视图模型中包含的列表中的每个复杂元素使用UIHint。我目前可以使用
@Html.DisplayFor(a=>a.ContentElements[0],“MYContent”)
,但希望将提示移动到实际的视图模型中,而不是在Html.DisplayFor帮助器中。在视图模型按原样构造的情况下,这是否可行

我的视图模型:

 public class MyViewModel
{
    public int PageId { get; set; }
    public IList<ContentElement> ContentElements { get; set; }
}
MYContent模板:

@model  ContentElement
@if (HttpContext.Current.IsDebuggingEnabled){

<span>@Model.ContentId</span>
}
@Html.Raw(Model.Content)
@model ContentElement
@if(HttpContext.Current.IsDebuggingEnabled){
@Model.ContentId
}
@Html.Raw(Model.Content)

在这种情况下,没有理由使用
[UIHint]
(如果使用了,则需要将模板更改为使用
@model List
)。只需将模板命名为
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; }
}
公共类MyViewModel
{
public int PageId{get;set;}
[UIHint(“MYContent”)]
公共IList ContentElements{get;set;}
}

但是因为
ContentElements
List
,这意味着模板中的模型必须是
@model List
(而不是
@model ContentElement

您的要求不清楚。您不需要
[UIHint]
属性。如果您的
DisplayTemplate
名为
ContentElement.cshtml
,并且位于
/Vews/Shared/DisplayTemplates
文件夹中,那么在主视图中您只需要
@Html.DisplayFor(m=>m.ContentElements)
我不知道。如果可以的话,我会把这个标记作为一个答案。谢谢
public class MyViewModel
{
    public int PageId { get; set; }
    [UIHint("MYContent")]
    public IList<ContentElement> ContentElements { get; set; }
}