MVC 4-在URL中隐藏控制器

时间:2018-12-09 06:13:41

标签: asp.net-mvc asp.net-mvc-routing

我有一个区域寄存器路由:

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "MyArea_default",
            "MyArea/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional },
            namespaces: new string[] { "market.Areas.MyArea.Controllers" }
        );
    }

它是这样工作的,没关系:

本地主机:MyArea / ActionName

但是在选择特定视图时,我打了F5键(在Visual Studio中),然后网址是:

本地主机:MyArea / Home / ActionName

因此,如果选择了特定视图,当我按f5键时,如何在URL中没有控制器名称的情况下工作?

2 个答案:

答案 0 :(得分:0)

有很多解决方案,其中最简单的就是可以使用服装路线属性

答案 1 :(得分:0)

我从您的代码中了解的内容

localhost:MyArea / ActionName =>将使用带ActionName方法的homeControllerClass。

localhost:MyArea / Home / ActionName =>将不起作用,因为它使用homeControllerClass但ActionName为“ Home”!那就是在homeControllerClass中寻找home方法。

从您的代码中: “ MyArea / {action} / {id}”  新建{控制器=“主页”,操作=“索引”,id = UrlParameter.Optional}

=>如果未指定任何动作,则意味着将homecontroller类用于具有默认动作名称index的MyArea请求。 因此,如果您使用MyArea / Home =>,它将使用homeController但动作为“ Home”。

{Controller} / {Action}