asp.net-mvc - 如何将视图模型发布到控制器
问题描述
我正在尝试创建一个采用视图模型的视图,它只有一个 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 方法中总是为空?
解决方案
推荐阅读
- mobile - DRM - 如何保护移动应用程序上的许可证 URL
- azure - Powershell Send-MailMessage 在 Azure Pipeline 上的身份验证失败
- c# - 强制密码包含小写、大写、特殊字符和数字
- python - Pynistaller .exe 似乎没有嵌入 Python
- openssl - F5 LTM:从分区运行 openssl s_client -connect?
- excel - 我想找到一列中每一行之间的差异并将其存储为变量,然后如果值大于 1,则插入那么多空白行
- mysql - 尝试从 Azure Pipelines 访问 MySQL 数据库时出现“用户拒绝访问”
- c - 无效的参数被传递给 C 中的函数
- c++ - 计算 CPP 程序使用的内存量
- r - 如何为一个样本比例绘制 95% 置信区间图