asp.net-mvc – MVC4部分视图没有将值加载到“容器”模型中
发布时间:2020-11-17 12:58:24 所属栏目:asp.Net 来源:互联网
导读:所以我想创建一个可重用的视图来编辑地址,电话号码等. 我设置了一个包含所有需要的模型的容器模型. 创建部分视图来处理地址部分 e形式 但是当它返回到控制器时,客户数据就在主页面,但部分视图中的任何内容都不存在(使用MVC4 / Razor) 集装箱模型 public class
所以我想创建一个可重用的视图来编辑地址,电话号码等. 我设置了一个包含所有需要的模型的容器模型. 但是当它返回到控制器时,客户数据就在主页面,但部分视图中的任何内容都不存在(使用MVC4 / Razor) 集装箱模型 public class CustomerViewModel { public Customer CustomerData { get; set; } public Address MainAddress { get; set; } public Address ShippingAddress { get; set; } public Phone MainPhone { get; set; } public Phone Fax { get; set; } } 控制器: public ActionResult Edit(int id = 0) { CustomerViewModel model = new CustomerViewModel(); model.CustomerData = Customer.FetchById(id); if (model.CustomerData == null) return HttpNotFound(); //... load addresses,phones return View(model); } [HttpPost] public ActionResult Edit(CustomerViewModel model) { if (ModelState.IsValid) { ///... save everything here - model has CustomerData,but nothing else } return View(model); } 主视图: @model ProjectName.WebSite.Models.CustomerViewModel ..... @using (Html.BeginForm()) { @Html.ValidationSummary(true) <fieldset> <legend>Customer</legend> @Html.HiddenFor(model => model.ModelCustomer.CustomerId) <div class="editor-label"> @Html.LabelFor(model => model.ModelCustomer.CompanyName) </div> <div class="editor-field"> @Html.EditorFor(model => model.ModelCustomer.CompanyName) @Html.ValidationMessageFor(model => model.ModelCustomer.CompanyName) </div> ... @Html.Partial("Address",Model.MainAddress,new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "Main" } }) ... <p> <input type="submit" value="Save" /> </p> </fieldset> } ..... 地址部分视图: @model ProjectName.Business.Address <fieldset style="margin-top: 20px;"> <legend>@(ViewData["label"] ?? "Address")</legend> @Html.HiddenFor(model => model.AddressId) <div class="editor-label"> @Html.LabelFor(model => model.Street) </div> <div class="editor-field"> @Html.EditorFor(model => model.Street) @Html.ValidationMessageFor(model => model.Street) </div> ... </fieldset> 我在这里做错了什么 – 为什么我不能从部分视图中获取模型? 解决方法解决了!我想到了!睡不着,只是绊倒了!在视图中,您必须确保HtmlFieldPrefix使用与您的组合模型类中相同的名称,因此,由于我将两个地址命名为“MainAddress”和“ShippingAddress” – 只需确保在设置时使用相同的名称部分: @Html.Partial("Address",new ViewDataDictionary(Html.ViewDataContainer.ViewData) { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "MainAddress" } }) @Html.Partial("Address",Model.ShippingAddress,new ViewDataDictionary(Html.ViewDataContainer.ViewData) { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix = "ShippingAddress" } }) (编辑:哈尔滨站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net 汉字转换拼音及首字母实现代码
- asp.net – Silverlight初始化错误2110 Internet Explorer
- asp.net-mvc – 使用Viewbag绑定DropdownlistFor
- asp.net-mvc – Bug? ASP.NET MVC 2中的客户端验证导致Val
- asp.net-core – 编译netcoreapp1.0,代码包含#if!NETSTAND
- 使用ASP.NET Identity 2.0和MVC 5进行自定义单点登录
- asp.net-mvc-3 – 如何在Razor视图引擎中注册程序集
- asp.net-mvc – ASP.net 5 MVC 6 bower.json和project.json
- asp.net-mvc – 如何在asp.net中使用mvc构建购物车?
- asp.net – Orchard CMS Media中的文件大小上传限制
推荐文章
站长推荐
- asp.net-mvc-4 – MVC 4 DropDownListFor错误 –
- 只需发布已修改的控制器,模型和ASP.NET MVC项目的
- asp.net – 如何从复选框列表中获取最新的选定值
- asp.net-mvc – ASP.NET MVC jQueryUI datepicke
- asp.net-mvc – 为什么在我的ASP MVC4应用程序中
- asp.net-mvc-3 – 如何在Razor视图引擎中注册程序
- asp.net – 如何从日历控件中获取所选日期?
- asp.net 禁用viewstate在web.config里
- asp.net代码中修改web.config节点的具体方法
- asp.net – 我应该在.gitingore文件中包含.vs文件
热点阅读