首页 > 解决方案 > 如何将视图模型发布到控制器

问题描述

我正在尝试创建一个采用视图模型的视图,它只有一个 int 属性和一个子模型列表,带有 int; 细绳; 字符串属性。

我想要做的是每次用户单击“添加行”按钮时,我都会在我的视图模型列表中创建一个新的子模型,让用户编辑属性然后想要回发到我的控制器,但无论如何,它总是空的。

我知道这一定很简单,但我今天难住了几个小时吗?有什么魔法需要发生吗?

任何帮助表示赞赏。

我的控制器:

using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class EmployeeUploadController : Controller
    {
        // GET: EmployeeUpload
        public ActionResult EmployeeUpload()
        {
            var vm = new EmployeeBulkUpload { UploadedBy = 12345 };
            vm.Employees.Add(new EmployeeBulkUploadItem { Id = 1, JobTitle = "Labourer", Name = "Jimmy" });
            return View(vm);
        }

        [HttpPost]
        [ActionName("EmployeeUpload")]
        public ActionResult EmployeeUploadPost(EmployeeBulkUpload vm)
        {

            return View(vm);
        }
    }
}

我的模型:

using System.Collections.Generic;

namespace WebApplication1.Models
{
    public class EmployeeBulkUpload
    {
        public EmployeeBulkUpload()
        {
            Employees = new List<EmployeeBulkUploadItem>();
        }
        public int UploadedBy { get; set; }
        public List<EmployeeBulkUploadItem> Employees { get; set; }
    }

    public class EmployeeBulkUploadItem
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string JobTitle { get; set; }
    }
} 

我的“容器”视图:

@using WebApplication1.Models
@model WebApplication1.Models.EmployeeBulkUpload
@{
    ViewBag.Title = "EmployeeUpload";
}<div>
    @using (Html.BeginForm("EmployeeUpload", "EmployeeUpload", FormMethod.Post))
    {
    <h2>EmployeeUpload</h2>
    <button>Add New</button>

    foreach(EmployeeBulkUploadItem emp in Model.Employees)
    {
        Html.RenderPartial("_EmployeeUploadItem", emp);
    }

    <input type="submit" name="SaveButton" value="Save" />
    }
</div>

我的项目部分视图:

@model WebApplication1.Models.EmployeeBulkUploadItem
<li>
    @Html.LabelFor(x => x.Id)
    @Html.EditorFor(x => x.Id)
    @Html.LabelFor(x => x.Name)
    @Html.EditorFor(x => x.Name)
    @Html.LabelFor(x => x.JobTitle)
    @Html.EditorFor(x => x.JobTitle)
</li>

我可以加载一条记录并直接回帖,但在我的 Controller EmployeeUploadPost 方法中总是为空?

标签: asp.net-mvcasp.net-mvc-partialview

解决方案


推荐阅读