asp.net – ViewModel的列表是空的
|
我正在开发我的第一个ASP.NET MVC 3应用程序,我有一个看起来像这样: @model IceCream.ViewModels.Note.NotesViewModel
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.TextBoxFor(m => m.Name)
foreach (var item in Model.Notes)
{
@Html.EditorFor(m => item);
}
<input type="submit" value="Submit"/>
}
我有一个EditorTemplate,看起来像这样: @model IceCream.ViewModels.Note.NoteViewModel
<div>
@Html.HiddenFor(m => m.NoteID)
@Html.TextBoxFor(m => m.NoteText)
@Html.CheckBoxFor(m => m.IsChecked)
</div>
NotesViewModel如下所示: public class NotesViewModel
{
public string Name { get; set; }
public IEnumerable<NoteViewModel> Notes { get; set; }
}
NoteViewModel如下所示: public class NoteViewModel
{
public int NoteID { get; set; }
public System.DateTime Timestamp { get; set; }
public string NoteText { get; set; }
public bool IsChecked { get; set; }
}
当它被传递到视图时,NotesViewModel就会很好的被填充。但是,当单击提交按钮时,处理该帖子的控制器操作只具有viewmodel的Name属性的值。 Notes属性 – 用户已检查/取消选中的注释列表为空。当显示视图并发回ViewModel时,我们之间断开了这些TextBoxFor和CheckBoxFor元素。对此的指导? 解 @ Html.EditorFor(m => m.Notes) 改变了底层的HTML,我明白了在这个帖子上提供了正确的模型绑定。看看生成的HTML,我看到我得到以下生成的注释之一: <div> <input id="Notes_0__NoteId" type="hidden" value="1" name="Notes[0].NoteId"> <input id="Notes_0__NoteText" type="text" value="Texture of dessert was good." name="Notes[0].NoteText"> <input id="Notes_0__IsChecked" type="checkbox" value="true" name="Notes[0].IsChecked> </div> 与我的原始代码生成的HTML不同: <div> <input id="item_NoteId" type="hidden" value="1" name="item.NoteId> <input id="item_NoteText" type="text" value="Texture of dessert was good." name="item.NoteText" > <input id="item_IsChecked" type="checkbox" value="true" name="item.IsChecked"> </div> 通过循环通过Notes,生成的HTML基本上失去对viewmodel的Notes属性的任何引用,并且当HTML被正确填充时,复选框值的设置无法将它们的值传递给viewmodel,我猜这是点的模型绑定。 所以我学到了一些东西,这很好。 解决方法你是一个聪明的人,所以看看你的看法。然后,考虑如何生成HTML。然后,考虑如何基于生成的HTML,模型绑定器应该知道的回发重新填充Notes。我想你会发现你的HTML没有足够的信息,为模型工具找出它。 考虑这个: @EditorFor(m => Model.Notes) 而不是你基本上从EditorFor函数隐藏上下文的for循环。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET MVC与Webforms:替换WebForms控件
- asp.net-mvc – ASP.NET MVC:Mock controller.Url.Action
- asp.net-mvc-4 – 用于继承类型的WebApi模型绑定
- ASP.NET Repeater ItemDataBound事件中等效的Eval(“field”
- asp.net-mvc – MVC授权属性HttpUnauthorizedResult FormsA
- asp.net-mvc-4 – 返回状态代码未经授权在WebAPI中定制IAct
- asp.net-mvc – 添加MVC控件或视图时,Visual Studio 2015“
- .net – Nuget包,没有nuget包管理器?
- asp.net-mvc – 传递参数到我的部分视图?
- asp.net-mvc – 运行时错误没有为扩展名’.cshtml’注册的构
