控制器
[HttpPost]
public ActionResult Save(string StrContactDetails, bool IsPrimary)
{
}
$.ajax({
async: true,
type: "POST",
url: @url.Action("Helper","Save"),
data: {
StrContactDetails: Details,
IsPrimary: true
},
//data: "StrContactDetails=" + Details + "&IsPrimary=" + true,
//data: "{StrContactDetails:'" + Details + "',IsPrimary:"+ true + "}",
//contentType: "application/json; charset=utf-8",
success: function() {
},
error: function() {
}
});
当我的action方法需要单个参数并从ajax传递单个参数时,这是有效的。但是,当它需要两个参数时,我无法使用两个参数调用该操作。因此,传递参数存在一些问题。可能是内容类型。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Default", action = "Login", id = UrlParameter.Optional }
).DataTokens = new RouteValueDictionary(new { area = "MyArea" });
当我的操作方法如下时,我可以致电.../TestProj/MyArea/Helper/Save/StrContactDetails="Test"
。
public ActionResult Save(string StrContactDetails)
{
return Content("called");
}
如果我的操作方法如下,我可以致电.../TestProj/MyArea/Helper/SaveEmergencyContact/StrContactDetails="test"?IsPrimary=true
。但是我为.../TestProj/MyArea/Helper/SaveEmergencyContact/StrContactDetails="test"/IsPrimary=true
获得404(替换?with /)
public ActionResult Save(string StrContactDetails, bool IsPrimary)
{
return Content("called");
}
我在这里缺少什么?我是否需要为带有2个参数的ajax调用进行路由配置更改?
答案 0 :(得分:17)
我认为您可能需要使用JSON.stringify对数据进行字符串化。
var data = JSON.stringify({
'StrContactDetails': Details,
'IsPrimary':true
});
$.ajax({
type: "POST",
url: @url.Action("Dhp","SaveEmergencyContact"),
data: data,
success: function(){},
contentType: 'application/json'
});
所以控制器方法看起来像,
public ActionResult SaveEmergencyContact(string StrContactDetails, bool IsPrimary)
答案 1 :(得分:11)
你可以通过不初始化url并将其写入硬件代码(如
)来实现//var url = '@Url.Action("ActionName", "Controller");
$.post("/Controller/ActionName?para1=" + data + "¶2=" + data2, function (result) {
$("#" + data).html(result);
............. Your code
});
虽然您的控制器端代码必须如下所示:
public ActionResult ActionName(string para1, string para2)
{
Your Code .......
}
这是一种简单的方法。现在我们可以通过json传递多个数据,如下所示:
var val1= $('#btn1').val();
var val2= $('#btn2').val();
$.ajax({
type: "GET",
url: '@Url.Action("Actionre", "Contr")',
contentType: "application/json; charset=utf-8",
data: { 'para1': val1, 'para2': val2 },
dataType: "json",
success: function (cities) {
ur code.....
}
});
虽然你的控制器端代码是相同的:
public ActionResult ActionName(string para1, string para2)
{
Your Code .......
}
答案 2 :(得分:2)
试试这个;
function X (id,parameter1,parameter2,...) {
$.ajax({
url: '@Url.Action("Actionre", "controller")',+ id,
type: "Get",
data: { parameter1: parameter1, parameter2: parameter2,...}
}).done(function(result) {
your code...
});
}
所以控制器方法看起来像:
public ActionResult ActionName(id,parameter1, parameter2,...)
{
Your Code .......
}
答案 3 :(得分:1)
试试这个:
var req={StrContactDetails:'data',IsPrimary:'True'}
$.ajax({
type: 'POST',
data: req,
url: '@url.Action("SaveEmergencyContact","Dhp")',
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify(req),
success: function (data) {
alert("Success");
},
error: function (ob, errStr) {
alert("An error occured.Please try after sometime.");
}
});
答案 4 :(得分:0)
function toggleCheck(employeeId) {
var data = 'referenceid= '+ employeeId +'&referencestatus=' 1;
console.log(data);
$.ajax({
type : 'POST',
url : 'edit',
data : data,
cache: false,
async : false,
success : function(employeeId) {
alert("Success");
window.redirect = "Users.jsp";
}
});
}
答案 5 :(得分:0)
var data = JSON.stringify
({
'StrContactDetails': Details,
'IsPrimary': true
})