【发布时间】:2017-12-06 07:47:40
【问题描述】:
我遇到了 MVC 路由问题(或者至少我认为是 mvc 路由 :))...
这是我的工作流程的详细信息
在我的项目中,我必须创建单独的用户登录。这是完全自定义的登录部分。 所以我所做的是通过调用ajax函数来附加我的菜单栏html, 该布局页面的 $(document).ready(function ())。
代码:
$(document).ready(function () {
$("#divProcessing").show();
$.ajax({
url: '@Url.Action("UICustomize", "Home")',
data: {
},
type: 'POST',
cache: false,
success: function (data) {
if (data != '')
{
$('#sidemenulist').append(data);
$("#divProcessing").hide();
}
else {
location.href = "/Home/Login";
}
}
});
});
“UICustomize”、“主页”
现在用户界面会根据用户的情况动态更改。所以到这部分为止没有问题。
之后,我必须明智地使用 asp.net mvc 中的 Area 来处理特定的模块。 然后我遇到了问题。 在这方面,我无法使用我的布局 ajax 功能,因为我的路径正在改变。
'/ClientManagement/Home/UICustomize'
我只想将该路径重定向到 Home/UICustomize。 怎么办?
路线如下: 路由配置
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Login", id = UrlParameter.Optional }
);
区域
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"ClientManagement_default",
"ClientManagement/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
【问题讨论】:
-
如果不想要面积法,则设置为
null-@Url.Action("UICustomize", "Home", new { area = "" }) -
@StephenMuecke 我如何在这里设置它?这是我的 ajax 调用 url -- url: '@Url.Action("UICustomize", "Home")' 在这个区域自动更改为 url: '/ClientManagement/Home/UICustomize',
-
阅读我的评论 - 添加
new { area = "" },然后生成/Home/UICustomize。但是你为什么要为此使用 ajax 而不是使用@Html.Action()来调用生成菜单/侧边栏的子操作? -
脚本中有
location.href = "/Home/Login";这一事实表明您的代码存在其他设计问题。 -
@StephenMuecke ,哦,它的工作.. @Url.Action("UICustomize", "Home", new { area = "" }) 谢谢哥们.. :) 你能解释一下吗有可能。我不明白你对我说的话。 “但是你为什么要使用 ajax 而不是使用 @Html.Action() 来调用生成菜单/侧边栏的子操作?”
标签: ajax asp.net-mvc asp.net-mvc-4 routes