我试图通过单击按钮将int Id列表从一个视图传递到另一个视图。我可以打控制器,但它传递的是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个多对多关系)
有人可以告诉我我要去哪里错吗?
答案 0 :(得分:0)
您可以尝试从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 () {
,您可以通过在网络浏览器中检查生成的html来获取ID值item_Id
。