コントローラ
[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() {
}
});
これは、アクションメソッドが単一のパラメーターを予期し、ajaxから単一のパラメーターを渡すときに機能します。しかし、2つのパラメーターが必要な場合、2つのパラメーターでアクションを呼び出すことはできません。そのため、パラメーターの受け渡しにはいくつかの問題があります。コンテンツタイプの場合があります。
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を取得しています(?を/に置き換えます)
public ActionResult Save(string StrContactDetails, bool IsPrimary)
{
return Content("called");
}
ここで何が欠けていますか? 2つのパラメーターを使用してajax呼び出しのルート構成を変更する必要がありますか?
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)
あなたは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 .......
}
これを試して:
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.");
}
});
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";
}
});
}