在asp.net mvc中如何在回发期间保留部分视图模型数据
我正在局部查看包含部门信息的部门。我有员工的页面视图。在员工视图中,我使用部门的局部视图来显示员工部门。我的员工模型如下所示在asp.net mvc中如何在回发期间保留部分视图模型数据,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我正在局部查看包含部门信息的部门。我有员工的页面视图。在员工视图中,我使用部门的局部视图来显示员工部门。我的员工模型如下所示 class Employee { public string EmployeeName{get;set}; public Department EmployeeName{get;set}; } class Department { public string DepartmentName{get;set}; } 我在员工页面视图上有提交按钮。 当我提交e
class Employee
{
public string EmployeeName{get;set};
public Department EmployeeName{get;set};
}
class Department
{
public string DepartmentName{get;set};
}
我在员工页面视图上有提交按钮。
当我提交employee视图时,我得到的部门对象为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 mvcapapplication2.Models.Department
部门
@LabelFor(model=>model.DepartmentName)
@EditorFor(model=>model.DepartmentName)
@Html.ValidationMessageFor(model=>model.DepartmentName)
@ActionLink(“返回列表”、“索引”)
雇员
@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")
}
@model mvcapapplication2.Models.Employee
@{
ViewBag.Title=“员工”;
}
雇员
@使用(Html.BeginForm(“索引”、“主页”))
{
雇员
@LabelFor(model=>model.EmployeeName)
@EditorFor(model=>model.EmployeeName)
@Html.ValidationMessageFor(model=>model.EmployeeName)
@Html.Partial(“部门”,Model.Department)
}
@节脚本{
@Scripts.Render(“~/bundles/jqueryval”)
}
首先尝试搜索。这个问题以前被问过很多次
以下是一种方法:
摘要:用多个表单标记包装每个部分,每个表单标记都有自己的提交按钮
但这一个看起来更像你想要的:
为此使用editortemplates,而不是partials
您遇到的问题是,当您的部门名称文本框命名不正确时,控制器无法读取该文本框。您的POST
将是EmployeeName=Prashant&DepartmentName=Phy
,因此Department
为null
,因此会出现错误。试试这个
您还更改了部门模型实体名称。
以及共享/编辑模板中的部门视图位置
视图:
请被否决的选民解释一下为什么这个问题被否决。这是一个好问题。不要只是否决投票,然后逃之夭夭。让海报知道原因。
@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);
}