我有JQuery函数来收集所有已检查的ApproveURLsController
并传递给控制器方法,但它没有调用控制器方法。
控制器名称:$("#Approve").click(function () {
checkedIds = $(".ckb").filter(":checked").map(function () { return this.id; });
$.ajax({
type: "POST",
url: "@Url.Action("ApproveOrRejectAll", "ApproveURLs")",
traditional: true,
data: { Ids: checkedIds.toArray() , Status: "A" },
success: sucessFunc,
error: errorFunc
});
function successFunc(data, status) {
location.reload();
}
function errorFunc(data, status) {
alert('error');
}
});
这是我的代码:
<input type="button" value="Approve" id="Approve" class="btn btn-primary" />
在上面的代码中“Approve”是按钮,我已经像这样定义了
[HttpPost]
public void ApproveOrRejectAll(List<int> Ids, string Status)
{
}
和我的控制器方法
RewriteEngine on
RewriteRule ^/rsrc/(.*) - [L,QSA]
RewriteRule ^/favicon.ico - [L,QSA]
RewriteRule ^(.*)$ /index.php?__path__=$1 [B,L,QSA]
Require all granted
我无法找到问题,请帮助我。
答案 0 :(得分:0)
创建模型以保存所需的值。
public class ApproveOrRejectAllModel {
public List<int> Ids { get; set; }
public string Status { get; set; }
}
更新操作以使用已定义的模型
[HttpPost]
public void ApproveOrRejectAll([FromBody]ApproveOrRejectAllModel model) {
List<int> Ids = model.Ids;
string Status = model.Status;
//..other code
}
在客户端,确保数据正确发送。
$("#Approve").click(function () {
checkedIds = $(".ckb").filter(":checked").map(function () { return this.id; });
//Constructing payload to be posted.
var model = { Ids: checkedIds.toArray(), Status: "A" };
$.ajax({
type: "POST",
url: "@Url.Action("ApproveOrRejectAll", "ApproveURLs")",
traditional: true,
data: JSON.stringify(model), //<-- stringify data to be sent.
success: sucessFunc,
error: errorFunc
});
function successFunc(data, status) {
location.reload();
}
function errorFunc(data, status) {
alert('error');
}
});
答案 1 :(得分:0)
如果没有一些解决方法,您无法通过HTTP调用Non-ActionResult函数。
您必须将[WebMethod]嵌入在您的void ApproveOrRejectAll(...)之上或将类型更改为ActionResult。
答案 2 :(得分:0)
使用可以使用java脚本数组实现此目的
查看: -
<div>
<input type="checkbox" name="checkBoxHeader" class="checkBoxHeader" value="1" /> 1
<input type="checkbox" name="checkBoxHeader" class="checkBoxHeader" value="2" /> 2
<input type="checkbox" name="checkBoxHeader" class="checkBoxHeader" value="3" /> 3
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Login" class="btn btn-default" id="btnSummit"/>
</div>
</div>
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript">
var obj;
$(".checkBoxHeader").click(function () {
var checkBoxValueToPush = new Array();
//checked check box value
$('.checkBoxHeader:checked').each(function () {
checkBoxValueToPush.push($(this).val());
});
obj = {
CheckeBoxdIds: checkBoxValueToPush
};
});
$("#btnSummit").click(function () {
$.ajax({
url: '/Default/filterData',
contentType: 'application/json; charset=utf-8',
type: 'POST',
data: JSON.stringify(obj),
cache: false,
success: function () {
},
error: function (xhr, status, error) {
alert("Error");
}
});
});
</script>
控制器: -
[HttpPost]
public void filterData(List<int> CheckeBoxdIds)
{
// Code
}
希望工作!!!
快乐编码!!!
答案 3 :(得分:0)
您好,根据您的代码段,我了解您在代码中遗漏的一些内容。我解释了一个使用ajax调用控制器的示例。
//Define the type of result you want from you controller here I m describing for JSONResut
//Controller with 2 parameter's make sure the type and name of parameter posted is same as written in controller method.
public JsonResult SaveEmployeeRecord(string id,string name)
{
string this_id = id;
string this_name = name;
// do here some operation
return Json(new {id=this_id,name = this_name },JsonRequestBehavior.AllowGet);
}
//View /Javascript to call action method
$.ajax({
type: 'POST',
dataType: 'json',
url: '/Home/SaveEmployeeRecord',
data: { id: '67', name: 'Prashant' },
success: function (Data) {
alert(data.id);
alert(data.name);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
});