asp.net-mvc – 如何将整个ViewModel传递回控制器
我有一个包含两个对象的ViewModel:
public class LookUpViewModel { public Searchable Searchable { get; set; } public AddToSearchable AddToSearchable { get; set; } } 两个包含的模型看起来像这样: public class Searchable { [Key] public int SearchableId { get; set; } public virtual ICollection<AddToSearchable> AddedData { get; set; } } public class AddToSearchable { [Key] public int AddToSearchableId { get; set;} [Required] public int SearchableId { get; set; } [Required] public String Data { get; set; } [Required] public virtual Searchable Searchable { get; set; } } 我有一个视图,使用我的LookUpViewModel并接收输入来搜索SearchableId.如果找到Searchable对象,则会创建一个LookUpViewModel对象并将其传递给View.然后,该视图显示AddToSearchable.Data的编辑器字段.提交后,我希望将LookUpViewModel传递给action方法来处理所有后端代码.唯一的问题是,传递给我的action方法的LookUpViewModel包含对Searchable的空引用和对AddToSearchable的有效引用.即我丢失了一半的数据. 以下是我的视图的示例: @model HearingAidTrackingSystem.ViewModels.LookUpViewModel @using (Html.BeginForm("LookUp","Controller","idStr",FormMethod.Post)) { <input type="text" name="idStr" id="idStr"/> <input type="submit" value="Search" /> } @if (Model.Searchable != null && Model.AddToSearchable != null) { using (Html.BeginForm("AddMyStuff","Controller")) { Html.HiddenFor(model => model.Searchable.SearchableId); Html.HiddenFor(model => model.Searchable.AddedData); Html.HiddenFor(model => model.AddToSearchable.AddToSearchableId); Html.HiddenFor(model => model.AddToSearchable.SearchableId); Html.HiddenFor(model => model.AddToSearchable.Searchable); <div class="editor-field"> @Html.EditorFor(model => model.AddToSearchable.Data) @Html.ValidationMessageFor(model => model.AddToSearchable.Data); </div> <input type="submit" value="Submit" /> } } 这是我的行动方法: public ActionResult LookUp(LookUpViewModel vm) { return View(vm); } [HttpPost] public ActionResult LookUp(string idStr) { int id = /*code to parse string to int goes here*/; Searchable searchable = dal.GetById(id); LookUpViewModel vm = new LookUpViewModel { Searchable = searchable,AddToSearchable = new AddToSearchable() }; //When breakpoint is set,vm contains valid references return View(vm); } [HttpPost] public ActionResult AddMyStuff(LookUpViewModel vm) { //**Problem lies here** //Do backend stuff } 很抱歉这篇冗长的帖子.我尽力保持简单.你可能有任何建议……开火. 解决方法
修复它的两种方法:
>您可以为Model.Searchable的所有属性添加to HiddenFor(). 更新:问题是:你需要使用@ Html.HiddenFor(),而不是Html.HiddenFor();. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何循环通过WebForms中的数据,就像在MVC中
- asp.net-mvc-3 – 构造函数注入用作Action方法参数的View M
- asp.net-web-api – 用于IFormFile的Asp.Net Core swagger帮
- asp.net – 根据IP地址限制对Elmah的访问
- asp.net-web-api – 无法从’Microsoft.IdentityModel.Toke
- 什么是Application Server for ASP.NET?
- asp.net-web-api – 用于自托管模式的WebApi按请求存储
- asp.net-mvc-3 – EF 4.1上的MvcMiniProfiler代码优先项目不
- asp.net-mvc – 解散并提交表单Bootstrap 3
- .net – 提供“添加到日历”链接