从Url ASP.NET MVC 4中删除区域名称

时间:2018-03-28 16:08:36

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

您好我在我的asp.net mvc 4应用程序中使用区域我有多个区域,我正在从一个区域导航到另一个区域,如何从Url中删除区域名称,如下所示:

... / AreaName / ControllerName / ActionName To ... / ControllerName / ActionName

例如:

"ActionLink("Text","ActionNAme","ControllerName",new{area = "area name"},null)"

有时我会在某个特定过程之后重定向到其他区域内的某个视图:

"ReturnRedirectToAction("Text","ActionName","ControllerName",new{area ="areaName"}, null)"

像这样一切正常,但我不希望AreaName出现在Url中。

这是AreaRegistration类:

public class ChileAreaAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "ChileArea";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "ChileArea_default",
                "ChileArea/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

2 个答案:

答案 0 :(得分:0)

如果你想完全摆脱一个或多个控制器的Area部分 - 意味着它/它们不再属于某个区域,那么你将不得不移动 * Controller.cs +对应视图模型,以及可能相应的 DisplayTemplates / EditorTemplates ,进入控制器/视图/模型文件夹在项目的根本。

如果您使用的是VisualStudio,则可以使用drag-n-drop进行此操作。

为了清晰度和一致性,最好还为每个移动的.cs文件调整名称空间,并相应地调整所有using

答案 1 :(得分:0)

将此装饰器放在控制器定义

[RouteArea("AreaName", AreaUrl = "")]