我正在部分查看包含部门信息的部门。我有员工的页面视图。在员工视图中我使用部门视图来显示员工部门。我的员工模型如下
class Employee
{
public string EmployeeName{get;set};
public Department EmployeeName{get;set};
}
class Department
{
public string DepartmentName{get;set};
}
我在员工页面视图上提交了按钮。 当我提交员工视图时,我将Department对象视为null。 你能否告诉我如何在回发期间获得儿童部门模型。 Coltroller代码
[HttpGet]
public ActionResult Employee2()
{
Employee e = new Employee();
e.EmployeeName = "Prashant";
e.Department = new Department() { DepartmentName = "Phy" };
return View(e);
}
[HttpPost]
public ActionResult Employee2(Employee e)
{
return View(e);
}
浏览
系
@model MvcApplication2.Models.Department
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<fieldset>
<legend>Department</legend>
<div class="editor-label">
@Html.LabelFor(model => model.DepartmentName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.DepartmentName)
@Html.ValidationMessageFor(model => model.DepartmentName)
</div>
</fieldset>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
员工
@model MvcApplication2.Models.Employee
@{
ViewBag.Title = "Employee";
}
<h2>
Employee</h2>
@using (Html.BeginForm("Index","Home"))
{
<fieldset>
<legend>Employee</legend>
<div class="editor-label">
@Html.LabelFor(model => model.EmployeeName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EmployeeName)
@Html.ValidationMessageFor(model => model.EmployeeName)
</div>
@Html.Partial("Department", Model.Department)
<p>
<input type="submit" value="EmployeeSave" />
</p>
</fieldset>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
答案 0 :(得分:5)
先尝试搜索。之前已经多次询问过这个问题。
这是一种方法:
摘要:使用自己的提交按钮将每个部分包装在多个表单标记中。
但是这个看起来更像是你所追求的:
Post a form with multiple partial views
使用editortemplates代替partials。
您遇到的问题是,如果没有为您的控制器正确命名您的DepartmentName文本框以便阅读它。您的POST
将为EmployeeName=Prashant&DepartmentName=Phy
,因此Department
为null
,因此错误。
答案 1 :(得分:4)
试试这个,
您还更改了“部门模型”实体名称。 和部门在Shared / EditorTemplates中查看位置。
查看:
@using (Html.BeginForm("Employee", "Content"))
{
@Html.EditorFor(model => model.dptEmployeeName.DepartmentName)
<fieldset>
<legend>Employee</legend>
<div class="editor-label">
@Html.LabelFor(model => model.EmployeeName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.EmployeeName)
@Html.ValidationMessageFor(model => model.EmployeeName)
</div>
@Html.EditorFor(model => model.dptEmployeeName.DepartmentName) //This is partial view
<p>
<input type="submit" value="EmployeeSave" />
</p>
</fieldset>
}
控制器:
[HttpPost]
public ActionResult Employee(Employee e,FormCollection frm)
{
var asd = frm["dptEmployeeName.DepartmentName"];
return View(e);
}