Asp.net mvc 如何将DisplayNameFor与视图模型一起使用?
假设我们有这样一个模型:Asp.net mvc 如何将DisplayNameFor与视图模型一起使用?,asp.net-mvc,html-helper,Asp.net Mvc,Html Helper,假设我们有这样一个模型: public class MyItem { [DisplayName("TheTitle")] public string Title {get; set;} } 对于编辑/详细信息/删除视图中的简单模型,我们可以使用@Html.displayname,如下所示: @model MyItem; @Html.DisplayNameFor(model => model.Title) //Result "TheTitle" @Html.Editor
public class MyItem
{
[DisplayName("TheTitle")]
public string Title {get; set;}
}
对于编辑/详细信息/删除视图中的简单模型,我们可以使用@Html.displayname,如下所示:
@model MyItem;
@Html.DisplayNameFor(model => model.Title) //Result "TheTitle"
@Html.EditorFor(model => model.Title)
public MyViewModel
{
[Display(Name = "Some Items")]
IEnumerable<MyItem> MyItems;
int Count;
}
或在列表视图中:
@model IEnumerable<MyItem>;
foreach (var myItem in Model)
{
@Html.DisplayNameFor(model => model.Title) //Result "TheTitle". Seems the model is still MyItem, rather than Inemerable<MyItem>.
@Html.EditorFor(model => model.Title)
}
@model IEnumerable;
foreach(模型中的var myItem)
{
@Html.DisplayNameFor(model=>model.Title)//结果“TheTitle”。该模型似乎仍然是MyItem,而不是不可数的。
@EditorFor(model=>model.Title)
}
这使得在许多视图上更改属性的标题更容易
但对于复杂的视图模型,例如:
public MyViewModel
{
[DipslayName("Count")]
int Count;
IEnumerable<MyItem> MyItems;
}
公共MyViewModel
{
[DipslayName(“Count”)]
整数计数;
i可数MyItems;
}
在这种情况下,如何显示“标题”
@model IEnumerable;
@DisplayNameFor(model=>model.Count)//结果“TheCount”。
@EditorFor(model=>model.Count)
@foreach(Model.MyItems中的var myItem)
{
@Html.displayname for(model=>??)//如何在此处显示“标题”?
@EditorFor(model=>?)//我想也是这个问题。
}
我在这里尝试了一些硬代码(用字符串“@:TheTitle”代替DisplayName for),但认为这不是一个好的做法
谢谢,圣诞快乐。您应该在模型属性上放置一个
DisplayAttribute
属性,如下所示:
@model MyItem;
@Html.DisplayNameFor(model => model.Title) //Result "TheTitle"
@Html.EditorFor(model => model.Title)
public MyViewModel
{
[Display(Name = "Some Items")]
IEnumerable<MyItem> MyItems;
int Count;
}
公共MyViewModel
{
[显示(Name=“某些项目”)]
i可数MyItems;
整数计数;
}
之后,您可以在视图中使用
DisplayFor
扩展方法,它将输出某些项目
您没有使用DisplayAattribute
标记您的MyItems
,请举例说明?谢谢。啊,“Count”属性是个好主意(我不知道DisplayName属性可以在任何地方使用,而不仅仅是EF的实体)。但这还不能解决MyItems的问题。我添加了一些新的代码来说明问题,再次感谢:)您在foreach
循环中尝试过这样做吗:@Html.DisplayNameFor(model=>myItem.Title)
是的。在每个myItem中,它都起作用。但是,你认为呢?只有一个,foreach不能使用。无论如何,感谢您提供的信息:)