[英]Post model and 2 checkbox lists to controller with Jquery Ajax
I want to send 2 lists containing values of the checked checkboxes along with my model using JQuery Ajax from an EditorTemplate being used as a partial view. 我想使用被用作局部视图的EditorTemplate从JQuery Ajax发送2个列表,其中包含选中的复选框的值以及我的模型。 Here it is:
这里是:
@model EsdpExport.View_Models.ProductLineCreateViewModel
@using EsdpHelpers
<script type="text/javascript">
$('#add-list').click(function () {
var commoditiesToRemove = $('input[type="checkbox"].removeCheckbox:checked').map(function () {
return $(this).val();
}).toArray();
var commoditiesToAdd = $('input[type="checkbox"].addCheckbox:checked').map(function () {
return $(this).val();
}).toArray();
$.ajax({
type: 'POST',
url: { @Url.Action("UpdateCommodityList", "ProductLine") },
contentType: "application/json; application/json; application/json",
data: { availableCommoditiesToAdd: commoditiesToAdd,
currentCommoditiesToRemove: commoditiesToRemove,
@Model.ToJson() },
success: function (result) {
$('#CommodityTable').html(result);
},
});
return false;
});
$('#remove-list').click(function () {
var commoditiesToRemove = $('input[type="checkbox"].removeCheckbox:checked').map(function () {
return $(this).val();
}).toArray();
var commoditiesToAdd = $('input[type="checkbox"].addCheckbox:checked').map(function () {
return $(this).val();
}).toArray();
$.ajax({
type: 'POST',
url: { @Url.Action("UpdateCommodityList", "ProductLine") },
contentType: "application/json; application/json; application/json",
data: {
availableCommoditiesToAdd: commoditiesToAdd,
currentCommoditiesToRemove: commoditiesToRemove,
@Model.ToJson() },
success: function (result) {
$('#CommodityTable').html(result);
},
});
return false;
});
</script>
<div id="CommodityTable">
@Html.WetStyleValidationSummary(true)
<table title="Current Commodities">
<tr>
<th>
Commodity Name
</th>
<th></th>
</tr>
@for (int i = 0; i < Model.CurrentCommodities.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(model => Model.CurrentCommodities[i].Name)
@Html.DisplayFor(model => Model.CurrentCommodities[i].Name)
</td>
<td>
@Html.HiddenFor(model => Model.CurrentCommodities[i].Id)
<input name="currentCommoditiesToRemove" class="removeCheckbox" type="checkbox" value="@Model.CurrentCommodities[i].Id">
</td>
</tr>
}
</table>
<input id="remove-list" name="remove" type="button" value="Remove from Product" class="button button-accent ui-link" />
<table title="Searched Commodities" id="Searched">
<thead>
<tr>
<th>
Commodity Name
</th>
<th></th>
</tr>
@for (int j = 0; j < Model.AvailableCommodities.Count; j++)
{
<tr>
<td>
@Html.HiddenFor(model => Model.AvailableCommodities[j].Name)
@Html.DisplayFor(model => Model.AvailableCommodities[j].Name)
</td>
<td>
@Html.HiddenFor(model => Model.AvailableCommodities[j].Id)
<input name="availableCommoditiesToAdd" class="addCheckbox" type="checkbox" value="@Model.AvailableCommodities[j].Id" />
</td>
</tr>
}
</table>
<input id="add-list" name="add" type="button" value="Add To Product" class="button button-accent ui-link" />
</div>
Here is the Controller action method: 这是Controller操作方法:
[HttpPost]
public ActionResult UpdateCommodityList(string[] availableCommoditiesToAdd,
string[] currentCommoditiesToRemove, ProductLineCreateViewModel productModel)
{
}
For some reason, my POST isn't reaching the ActionMethod. 由于某种原因,我的POST无法到达ActionMethod。 Why?
为什么?
$ .ajax的Url参数是一个字符串,而不是对象,因此将该行更改为:
url: "@Url.Action("UpdateCommodityList", "ProductLine")",
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.