gpt4 book ai didi

c# - DisplayNameFor 和 EditorFor 在同一 View 中

转载 作者:行者123 更新时间:2023-11-30 20:58:15 25 4
gpt4 key购买 nike

我有以下看法……

@model IEnumerable<Contact>

@{ ViewBag.Title = "Contact Manager"; }


<table>
<tr>
<th>
@Html.DisplayNameFor(model => model.FirstName)
</th>
<th>
@Html.DisplayNameFor(model => model.MiddleName)
</th>
<th>
@Html.DisplayNameFor(model => model.LastName)
</th>
<th>
@Html.DisplayNameFor(model => model.HomePhone)
</th>
<th>
@Html.DisplayNameFor(model => model.WorkPhone)
</th>
<th>
@Html.DisplayNameFor(model => model.MobilePhone)
</th>
<th>
@Html.DisplayNameFor(model => model.EMail)
</th>
<th></th>
</tr>

@*This first row is the search form*@

<tr>
<th>
@Html.EditorFor(model => model.FirstName)
</th>
<th>
@Html.EditorFor(model => model.MiddleName)
</th>
<th>
@Html.EditorFor(model => model.LastName)
</th>
<th>
@Html.EditorFor(model => model.HomePhone)
</th>
<th>
@Html.EditorFor(model => model.WorkPhone)
</th>
<th>
@Html.EditorFor(model => model.MobilePhone)
</th>
<th>
@Html.EditorFor(model => model.EMail)
</th>
<th></th>
</tr>

</table>

问题是“EditorFor()”调用的谓词参数中的“model”参数指的是 IEnumerable,而不是“DisplayNameFor()”方法中的方式。因此,我收到编译错误,因为属性名称(例如:“FirstName”)不是 IEnumerable 的属性。

Intellisense 实际上为函数的谓词参数中使用的“方法”参数返回了各种 IEnumerable 方法(例如“Select()”)。奇怪的是,即使“DisplayNameFor()”方法调用似乎有效,智能感知也不会显示联系人的属性。

这里有什么区别?

老实说,这是有道理的,因为模型是 IEnumerable,所以这种语法不起作用。但是,当您将强类型 View 生成为列表时,我很困惑为什么它确实适用于向导插入的“DisplayNameFor()”方法。那么在这种情况下,为什么它对一个 (DisplayNameFor()) 有效……但对另一个 (EditorFor()) 无效。

谢谢,G

最佳答案

为了编辑字段,它们必须引用各个属性(以便它们可以正确绑定(bind)模型)。 DisplayNameFor本质上是获取集合中第一项的标签。

您必须在一个循环中执行此操作(如果您正在保存它,则为 for 循环,否则字段将不会被正确索引)。试试这个(虽然你可能必须让你的模型成为 List<T>:

@for (int i = 0; i < Model.Count(); i++)
{
<tr>
<th>
@Html.EditorFor(m => m[i].FirstName)
</th>
<th>
@Html.EditorFor(m => m[i].MiddleName)
</th>
<th>
@Html.EditorFor(m => m[i].LastName)
</th>
<th>
@Html.EditorFor(m => m[i].HomePhone)
</th>
<th>
@Html.EditorFor(m => m[i].WorkPhone)
</th>
<th>
@Html.EditorFor(m => m[i].MobilePhone)
</th>
<th>
@Html.EditorFor(m => m[i].EMail)
</th>
<th></th>
</tr>
}

关于c# - DisplayNameFor 和 EditorFor 在同一 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16268632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com