我有一个窗体(使用主视图模型),然后是部分视图来实现窗体的地址部分(辅助视图模型)。当我提交表单时,我没有回到表单的内部部分视图部分的值。没有得到任何错误,只是失去了部分的价值。代码如下:失去部分视图模型表格值
形式的“主” 部分:
@model REMS.ViewModels.AddComplexViewModel
@{
ViewBag.Title = "Add Complex";
}
<h2>@ViewBag.Title</h2>
@{ Html.Partial("~/Views/Shared/Partials/ActionStatusPartial.cshtml", Model.ActionStatusMessageViewModel); }
@using (Html.BeginForm("AddComplex", "Admin", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
<h4>Add a New Complex</h4>
<hr />
<div class="form-group">
@Html.LabelFor(m => m.Name, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Name, new { @class = "form-control" })
</div>
</div>
@Html.Partial("~/Views/Shared/Partials/AddressFormPartial.cshtml", Model.AddressViewModel)
<div class="form-group">
@Html.Label("Owner", new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.DropDownList("SelectedOwner", Model.Owners, "Select an Owner...")
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Add" />
</div>
</div>
}
形式的局部视图:
@model REMS.ViewModels.AddressViewModel
<div class="form-group">
@Html.LabelFor(m => m.Address1, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Address1, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Address2, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Address2, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.City, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.City, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.State, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.State, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Zip, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Zip, new { @class = "form-control" })
</div>
</div>
视图模型:
public class AddComplexViewModel
{
[Display(Name = "Name")]
public string Name { get; set; }
[Display(Name = "AddressViewModel")]
public AddressViewModel AddressViewModel { get; set; }
[Display(Name = "SelectedOwner")]
public Guid SelectedOwner { get; set; }
[Display(Name = "Owners")]
public SelectList Owners { get; set; }
[Display(Name = "ActionStatusMessageViewModel")]
public ActionStatusViewModel ActionStatusMessageViewModel { get; set; }
public AddComplexViewModel()
{
ActionStatusMessageViewModel = new ActionStatusViewModel();
AddressViewModel = new AddressViewModel();
}
}
public class AddressViewModel
{
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Zip { get; set; }
}
当我提交的形式地址值全为空。我错过了什么吗?
局部视图仍技术上来看,你不能够从部分获取值只是因为它是主视图的形式中。你可以使用像这里概述的编辑器模板 - > https://stackoverflow.com/questions/5197038/complex-models-and-partial-views-model-binding-issue-in-asp-net-mvc-3 – ragerory
该解决方案工作。现在有其他问题,但与此无关。你可以添加这个答案,以便我可以将其标记为已接受?谢谢! –