我正在尝试使用 JavaScript 动态添加到我的 ViewModel 中的列表属性。每当我提交表单时,post 控制器的列表中都没有项目。我尝试使用 razor 语法将其添加到 JavaScript 函数中的列表,如下所示:
@{ Model.Contacts.Add(new Contact { ID = 1, FirstName = "Tester" })}
只是想看看我是否能在列表中找到一个项目。我还在页面顶部做了它,看看它是否只是因为它是在 JavaScript 中的。但是,当我提交表单时,同样的事情发生了,列表中没有项目。我不知道是否需要创建 API 才能提交数据,但 Company 属性会在其中提交数据。我希望能够提交这两个属性而无需创建 API。我不知道是否有一种特殊的剃刀语法或类可以用来实现这一点。请帮忙!谢谢你。
视图模型:
public class CompanyViewModel
{
public Company Company { get; set; }
public List<Contact> Contacts { get; set; }
public CompanyViewModel()
{
this.Contacts = new List<Contact>();
}
}
控制器:
public IActionResult Create()
{
var vm = new CompanyViewModel();
return View(vm);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(CompanyViewModel companyView)
{
if (companyView.Company != null)
{
_context.Add(companyView.Company);
if (companyView.Contacts != null)
_context.Contacts.AddRange(companyView.Contacts);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(companyView);
}
看法:
@model CheckbookRegister.Models.CompanyViewModel
@{
ViewData["Title"] = "Create";
}
<h1>Create Company</h1>
<hr />
<form asp-action="Create">
<!-- Omitted for brevity -->
<div class="row justify-content-between">
<h4 class="col mb-0 align-self-end">Contacts</h4>
<div class="col-md-auto text-right mt-2">
<a class="col btn btn-sm btn-outline-success px-4" id="add" href="#" onclick="addContact()">Add</a>
</div>
</div>
HUH函数
相关分类