【问题标题】:how to persist partial view model data during postback in asp.net mvc如何在asp.net mvc中回发期间保留部分视图模型数据
【发布时间】:2013-07-12 04:55:13
【问题描述】:

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

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

}

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

我在员工页面视图上有提交按钮。 当我提交员工视图时,我将部门对象设为空。 您能否建议我在回发期间如何获得子部门模型。 管理员代码

[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")
}

【问题讨论】:

  • 投反对票的人能否解释一下为什么这个问题被投反对票。这是一个很好的问题。不要只是投反对票然后逃跑。让发布者知道原因。

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


【解决方案1】:

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

这是一种方法:

mvc partial view post

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

但这个看起来更像你所追求的:

Post a form with multiple partial views

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

您遇到的问题是,当您的 DepartmentName 文本框没有正确命名以供控制器读取时。您的POST 将是EmployeeName=Prashant&amp;DepartmentName=Phy,因此Departmentnull,因此会出现错误。

【讨论】:

    【解决方案2】:

    试试这个,

    您还更改了部门模型实体名称。 以及在 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);
            }
    

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 2010-09-12
      相关资源
      最近更新 更多