我有一个简单的应用程序;给定一个
SpecificationName
,它将加载该 SpecificationName
的所有属性。
SamplesController
:
public ActionResult Create()
{
SampleVM samplevm = new SampleVM();
return View();
}
我的Javascript文件:
$(function () {
var Samples = [];
$('#SpecificationName').change(function () {
var specificationName = $(this).val();
var lotId = $('#LotId').val();
var url = 'https://localhost:44372/Samples/FilterAttributes';
var queryString = url + '?specificationName=' + specificationName + '&lotId=' = lotId;
$('#filter-table').load(queryString);
});
});
它正确加载属性表。但是当我提交时,没有任何内容传递给控制器;
samples
为空:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult SaveSamples(List<SampleVM> samples)
{
if (ModelState.IsValid)
{
Sample sample = new Sample();
db.Samples.Add(sample);
return RedirectToAction("Create");
}
return View(samples);
}
我将
@model IEnumerable<IQC.ViewModels.SampleVM>
传递给 Create.cshtml
视图和 FilterAttributes.cshtml
部分视图。
我做错了什么?
POST 有效负载:
__RequestVerificationToken: some token
item.SpecificationAttributeId: 37627
item.AttributeId: 994
item.Value: 1
item.SpecificationAttributeId: 37628
item.AttributeId: 993
item.Value: 1
同样是
SaveSamples
。这就是它没有被传递到控制器中的 samples
的原因吗?有没有办法改名字?
根据图示的有效负载,您似乎提交了扁平结构。因此,它只能绑定到标量模型值:
[HttpPost]
//public ActionResult SaveSamples(List<SampleVM> samples) { ... }
public ActionResult SaveSamples(SampleVM sample) { ... }
检查此场景以确保标量模型项没问题。如果这有效,请扩展当前视图部分并渲染基于索引的输入名称以提交基于列表的有效负载而不是标量/单个,例如: