【问题标题】:How to handle links with MVC 'Area' sections如何处理带有 MVC 'Area' 部分的链接
【发布时间】:2019-02-05 12:25:38
【问题描述】:

我在 C# MVC 中使用“AdminLte”模板开发了一个项目,并且我使用区域作为子模块。

当我从主页 (http://localhost:9760/Home/Index) 访问链接时,它完美地工作如下http://localhost:9760/Manage/ChangePassword

但是当我从区域 ex: 'AirSurveillance' http://localhost:9760/AirSurveillance/Manage/ChangePassword 访问相同的链接时,它无法正常工作并给出 404 错误,因为它试图在 'AirSurveillance' 区域中找到 'Manage' 控制器(不存在)。

这是我自动生成的“SecurityClearanceAreaRegistration.cs”文件

namespace IIMS.Areas.SecurityClearance
{
    public class SecurityClearanceAreaRegistration : AreaRegistration 
    {
        public override string AreaName 
        {
            get 
            {
                return "SecurityClearance";
            }
        }

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

请帮帮我。

【问题讨论】:

    标签: c# asp.net model-view-controller


    【解决方案1】:

    使用区域时,您的链接需要为您所指向的控制器/动作指定区域。如果您想在这些区域之外使用控制器,请指定一个空白区域。比如……

    @Html.ActionLink("ChangePassword", "Manage", new { Area = ""})
    

    【讨论】:

    • 非常感谢kd345205,真的很有帮助
    猜你喜欢
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    相关资源
    最近更新 更多