我试图通过按钮单击将一个视图列表从一个视图传递到另一个视图。我能够击中控制器,但它传递null。
HTML:
@foreach (var business in Model.Businesses)
{
<tr>
<td>@business.Name</td>
<td>
<p>
@foreach (var bt in @business.BusinessTypes)
{
@bt.Name;
}
</p>
</td>
<td><button type="button" id="btnCalcVS"> Calculate Validator Score</button></td>
</tr>
}
jQuery的:
<script type="text/javascript">
$(document).ready(function () {
var businessTypeIds = [];
$(document).on("click", "#btnCalcVS", function () {
$.ajax({
type: 'POST',
url: '/BusinessType/Index',
contentType: "application/json",
data: JSON.stringify( @foreach (var business in Model.Businesses)
{
@foreach (var bt in @business.BusinessTypes)
{
@bt.Id;
}
}),
success: function (data) {
alert("success");
},
error: function (e) {
alert(e);
}
});
});
});
</script>
控制器:
[HttpPost]
[Route("/BusinessType/Index")]
public IActionResult Index([FromBody] List<int> businessTypeIds)
{
//logic
}
如上所述,我正在击中控制器,但它具有空值。从HTML代码中可以看出,我在列表中有一个列表。 (企业内部的业务类型,因此2对多关系)
谁能告诉我哪里出错了?
您可以尝试从html获取id,然后将其传递给控制器。
<form method="post">
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.DenniPlan2[0].Id)
</th>
<th>
@Html.DisplayNameFor(model => model.DenniPlan2[0].CisloZakazky)
</th>
<th>
@Html.DisplayNameFor(model => model.DenniPlan2[0].CisloProduktu)
</th>
<th>
@Html.DisplayNameFor(model => model.DenniPlan2[0].Poradi)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.DenniPlan2)
{
<tr>
<td>
@Html.EditorFor(model => item.Id)
</td>
<td>
@Html.EditorFor(model => item.CisloZakazky)
</td>
<td>
@Html.EditorFor(model => item.CisloProduktu)
</td>
<td>
@Html.EditorFor(model => item.Poradi)
</td>
</tr>
}
</tbody>
</table>
<input type="button" id="btnCalcVS" value="submit" />
</form>
@section Scripts{
<script type="text/javascript">
$(document).ready(function () {
var businessTypeIds = [];
$("[id=item_Id]").each(function () {
businessTypeIds.push($(this).val());
});
console.log(businessTypeIds);
$(document).on("click", "#btnCalcVS", function () {
$.ajax({
type: 'POST',
url: '/BusinessType/Index',
contentType: "application/json",
data: JSON.stringify(businessTypeIds),
success: function (data) {
alert("success");
},
error: function (e) {
alert(e);
}
});
});
});
</script>
}
对于这行$("[id=item_Id]").each(function () {
,您可以通过检查Web浏览器中生成的html来获取id值item_Id
。