asp.net - 如何在 asp.net mvc 回发期间保留部分 View 模型数据

标签 asp.net asp.net-mvc-3

我有包含部门信息的部分 View 部门。我有员工的页面 View 。在员工 View 中,我使用部门的部分 View 来显示员工部门。我的员工模型如下

class Employee
{
  public string EmployeeName{get;set};
  public Department EmployeeName{get;set};

}

class Department
{
  public string DepartmentName{get;set};
}

我在员工页面 View 上有提交按钮。
当我提交员工 View 时,我将 Department 对象设为 null。
您能否建议我如何在回发期间获得子部门模型。
Controller 代码
[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")
}

最佳答案

先尝试搜索。这个问题之前已经被问过很多次了。

这是一种方法:

mvc partial view post

总结:将每个部分包装在多个表单标签中,每个标签都有自己的提交按钮。

但这似乎更像是您所追求的:

Post a form with multiple partial views

为此使用编辑器模板而不是部分。

您遇到的问题是,当您的 DepartmentName 文本框未正确命名以供 Controller 读取时。您的 POST将是 EmployeeName=Prashant&DepartmentName=Phy因此 Departmentnull ,因此错误。

关于asp.net - 如何在 asp.net mvc 回发期间保留部分 View 模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17607665/

相关文章:

asp.net-mvc - 使用 Entity Framework 检测 Controller 中模型属性的状态变化

javascript - Hook jQuery 验证消息更改

c# 对象引用未设置为对象的实例

c# - 如何在主 Silverlight 控件上隐藏和显示 silverlight 用户控件?

asp.net - 委托(delegate)实例化 - 说明

asp.net - 什么是用于性能测试网页/网站的好工具或网站?

asp.net - 将 MVC 添加到 ASP.NET 网站

asp.net-mvc-3 - 提交后的mvc3复选框值

asp.net - 在Asp.Net MVC中的路由中使用路由名称

asp.net - 如何将 HtmlEncode 与 TemplateFields、数据绑定(bind)和 GridView 结合使用