我很难理解如何正确配置路由。我有一个MVC应用程序,在一个家庭控制器下我宁愿采取不同的后期行动。
[HttpPost]
[ActionName("Login")]
public ActionResult Login(Login login, FormCollection formCollection)
{
return Json(true)
}
[HttpPost]
[ActionName("Locations")]
public ActionResult Locations(Login login, FormCollection formCollection)
{
return Json(true);
}
在我看来,我有几个ajax帖子,我希望他们能够转到那些不同的行动结果。
$.ajax({
ur: '@Url.Action("Locations", "Home")',
type: 'post',
data: jsonData,
contentType: 'application/json',
success: function (result) {
});
}
});
$.ajax({
ur: '@Url.Action("Login", "Home")',
type: 'post',
data: jsonData,
contentType: 'application/json',
success: function (result) {
});
}
});
问题是,任何一个ajax帖子都会在“登录”操作下执行代码。这是我在routeconfig文件中的maproute,我认为问题出在这里。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Login", id = UrlParameter.Optional }
);
我不知道如何修改我的帖子的maproute以进行适当的操作。
谢谢。
答案 0 :(得分:0)
这次对我有用的是指定对“[action] / [controller]”的显式绑定。像这样:
routes.MapRoute(
name: "ProcessLogin",
url: "Home/ProcessLogin");
routes.MapRoute(name: "Locations", url: "Home/Locations");
为了更加谨慎,只需将ProcessLogin与主要的Login视图/操作分离似乎运作良好。
答案 1 :(得分:0)
试试这个
[Route("home/login")]
[HttpPost]
public ActionResult Locations(Login login, FormCollection formCollection)
{
return Json(true);
}
[Route("home/locations")]
[HttpPost]
public ActionResult Locations(Login login, FormCollection formCollection)
{
return Json(true);
}
和,RouteConfig.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "SinglePage",
url: "{Url}",
defaults: new { Url = "/" }
);
}
并使用:
$.ajax({
ur: '../../../../../../../../../../home/login',
type: 'post',
data: jsonData,
contentType: 'application/json',
success: function (result) {
});
}
});
$.ajax({
ur: '../../../../../../../../../../home/locations',
type: 'post',
data: jsonData,
contentType: 'application/json',
success: function (result) {
});
}
});