【发布时间】:2013-11-29 04:46:11
【问题描述】:
我是 ASP.NET MVC 4 的新手,我正在为一个在 web 表单中很容易的概念而苦苦挣扎。那么,如果我有一个客户类,并且一个客户有一个地址,我如何在同一个提交操作中在同一个表单上编辑客户和地址?我想为地址创建一个“_Edit”部分视图,但如果地址没有提交按钮,我不知道如何连接控制器。我只想要一个按钮来将所有模型保存在一个视图中。
所以,我可以创建一个新的 CompanyView 模型、视图和控制器,并按照这种方式进行操作。但是,如果我有许多具有地址的对象,那么继续创建视图模型以允许您以相同的形式编辑对象和地址似乎需要做很多工作。有没有办法创建地址部分编辑视图并以某种方式更新公司编辑控制器中的地址字段?或者,它是否以某种方式将 model.Address 传递回 Company Edit Controller 而不是 null?
编辑:
模型
public class Address
{
public Int32 Id { get; set; }
[Display(Name = "Address 1")]
public String Address1 { get; set; }
[Display(Name = "Address 2")]
public String Address2 { get; set; }
[Display(Name = "City")]
public String City { get; set; }
[Display(Name = "State")]
public String State { get; set; }
[Display(Name = "Postal Code")]
public String PostalCode { get; set; }
[Display(Name = "Country")]
public String Country { get; set; }
}
public class Company
{
public Int32 Id { get; set; }
[Display(Name = "Company Name")]
public String Name { get; set; }
public Int32 AddressId { get; set; }
public virtual Address Address { get; set; }
}
地址_编辑部分视图
@model Models.Address
<div class="well">
<fieldset>
<legend>Address</legend>
@Html.EditorFor(model => model.Address1)
@Html.EditorFor(model => model.Address2)
@Html.EditorFor(model => model.City)
@Html.EditorFor(model => model.State)
@Html.EditorFor(model => model.PostalCode)
@Html.EditorFor(model => model.Country)
</fieldset>
</div>
公司编辑视图
@model Models.Company
@{
ViewBag.Title = "Edit";
Layout = "~/Views/shared/ContentLayout.cshtml";
}
<div class="row">
<div class="col-lg-12">
<div class="page-header">
<h2>Edit Company</h2>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-8">
@using (Html.BeginForm("Edit", "Company", new { @class = "bs-example form-horizontal" })) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
@Html.EditorFor(model => model.Name)
@Html.HiddenFor(model => model.AddressId)
@Html.Partial("~/Views/Address/_Edit.cshtml", Model.Address)
<p>
<button name="button" type="submit" class="btn btn-primary" value="submit">Submit</button>
</p>
}
</div>
</div>
公司编辑控制器
[HttpPost]
public ActionResult Edit(Company model, int id)
{
if (ModelState.IsValid)
{
// model.Address = NULL here!
Success("Record updated!");
return RedirectToAction("Index");
}
}
【问题讨论】:
标签: asp.net-mvc-4 razor