Wit*_*ail 3 asp.net razor asp.net-mvc-3
这是部分的一部分:
@model IEnumerable<BLL.DomainModel.Jerk>
@foreach (var jerk in Model)
{
using (Html.BeginForm("AddJerk", "Jerk", FormMethod.Post, new { @class = "jerkListForm" }))
{
@Html.HiddenFor(jerk => )
@jerk.Name
...
}
}
Run Code Online (Sandbox Code Playgroud)
HiddenForlambda寻找的类型与@model(IEnumerable)相同,而我正在寻找IEnumerable中的单个对象.
我错过了什么?为什么它仍然在foreach循环中寻找一个集合?
小智 12
@model IEnumerable<Type>
@foreach(var item in Model)
{
@Html.HiddenFor(model => item)
}
Run Code Online (Sandbox Code Playgroud)
Don't forget that Type must be de/serializable in order for this to work.
Asp.Net MVC提供的所有Html For Helpers使用页面定义模型的模型.你能做的就是创造一个EditorTemplate.创建你的视图文件夹中的子目录名为EditorTemplates如\Home\EditorTemplates\,添加一个名为新视图Jerk.cshtml并分配方式模型.
然后你可以使用Html.HiddenFor(f => f.Name)等等每个属性.这将为您提供您期望的键入访问权限.
在主视图中,您将执行以下操作:
@foreach(var jerk in Model) {
@Html.EditorFor(m => jerk)
}
Run Code Online (Sandbox Code Playgroud)
或者你可以调用EditorForModel自动循环的地方并查找EditorTemplate.
@Html.EditorForModel()
Run Code Online (Sandbox Code Playgroud)
该EditorFor会寻找EditorTemplate你首先创建那么它将从那里走,直到它找到一个替代,否则会输出一个MVC认为你可能需要.
我会改用 for 循环。这样你的隐藏字段就会有正确的名称。如果您像示例中那样使用帮助程序,则所有隐藏字段的名称都将为 jerk,这将无法正确回发。
@foreach (var i = 0; i < Model.Count; i++)
{
var jerk = Model[i];
using (Html.BeginForm("AddJerk", "Jerk", FormMethod.Post, new { @class = "jerkListForm" }))
{
@Html.HiddenFor(model => model[i])
@jerk.Name
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果回发时绑定对您来说并不重要,您可以简单地执行以下操作
@Html.HiddenFor(混蛋=>混蛋)
| 归档时间: |
|
| 查看次数: |
15154 次 |
| 最近记录: |