C# 在复杂对象列表上使用UIHint注释?
我想对视图模型中包含的列表中的每个复杂元素使用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
@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; }
}