asp.net-mvc – MVC4部分视图没有将值加载到“容器”模型中
发布时间:2020-05-22 20:09:21 所属栏目: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-mvc – ASP.net MVC数据注释DateTime默认值
- asp.net-mvc-3 – ASP.NET MVC 3 JSONP:这适用于JsonValue
- asp.net-mvc – ASP.NET MVC流畅的nNibernate,IoC工具是什么
- asp.net-mvc-4 – 同一网站的不同域的robots.txt文件
- asp.net – 基类包含字段’X’,但其类型(System.Web.UI.Scr
- asp.net-core-mvc – 使用MVC Core下载文件
- asp.net-mvc – VS2012 ProjectTypeGuids在安装ASP.NET和We
- asp.net-mvc-3 – 与SQL Server建立连接时发生与网络相关或
- asp.net-mvc – ASP.NET MVC JavaScript路由
- asp.net-mvc – 最新的ASP.Net MVC 3请求处理管道图?
推荐文章
站长推荐
- asp.net-mvc – 如何通过URL获取RouteData?
- 如何使用ASP.NET身份实现多租户用户登录
- asp.net-mvc – 使用没有ORM的ASP.NET MVC
- asp.net-mvc – ICommandHandler / IQueryHandle
- asp.net-mvc – ASP.NET MVC推荐的依赖注入框架是
- asp.net – 调试时编辑源代码
- asp.net-mvc – 在“控制器操作”中访问操作过滤
- asp.net-mvc – 带有asp.net mvc 4和EntityFrame
- asp.net-mvc-3 – MVC-Mini-Profiler错误地显示重
- asp.net – jquery getJson没有将任何值传递给控
热点阅读
