Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将DisplayNameFor与视图模型一起使用?_Asp.net Mvc_Html Helper - Fatal编程技术网

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不能使用。无论如何,感谢您提供的信息:)