【发布时间】:2015-04-03 16:18:56
【问题描述】:
控制器
[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 传递单个参数时,此方法有效。但是,当它需要两个参数时,我无法使用两个参数调用该操作。因此,传递参数存在一些问题。可能是内容类型。
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。但我得到了 404 .../TestProj/MyArea/Helper/SaveEmergencyContact/StrContactDetails="test"/IsPrimary=true(将 ? 替换为 /)
public ActionResult Save(string StrContactDetails, bool IsPrimary)
{
return Content("called");
}
我在这里缺少什么?我需要为 2 个参数的 ajax 调用更改路由配置吗?
【问题讨论】:
-
改成
data: { StrContactDetails: 'Details', IsPrimary: 'true' },(或使用JSON.stingfy()) -
是否命中了你的action方法,但提供了
null参数? -
不,它没有击中 Action 方法
-
您发帖到
/SaveEmergencyContact/Dhp!假设您有DhpController,请将其更改为url: '@url.Action("SaveEmergencyContact","Dhp")', -
你已经用最新的编辑完全改变了你的问题,使得以前的 cmets 和答案毫无意义(调用这些 url 与 将多个参数从 ajax 传递到控制器 ? 你应该问一个新问题!但是,是的,你确实需要一个特定的路线来使第二个示例工作。
标签: jquery asp.net-mvc asp.net-ajax