簡體   English   中英

將 MVC5 的 RoutePrefix 與區域一起使用

[英]Using MVC5's RoutePrefix with areas

我目前有一個位於 /account/signin 的控制器。 如何使用 MVC5 的 RoutePrefix 使其在 /account/sign-in 處可尋址?

我試過裝飾我的控制器:

[RoutePrefix("account/sign-in")]
public class SignInController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

並在RegisterRoutes中映射我的路線:

routes.MapMvcAttributeRoutes();

但是這樣做時我得到了這個異常:

找不到路徑“/account/sign-in”的控制器或未實現 IController

我刪除了我的默認路由文件 ( AccountAreaRegistration.cs ),它現在可以工作了。 我沒有意識到你不能同時使用!

您還可以添加:

context.Routes.MapMvcAttributeRoutes();

AccountAreaRegistration類中的RegisterArea方法,然后使用類似:

[RouteArea("admin")]
[RoutePrefix("menu")]
[Route("{action=index}/{id?}")]

在控制器的頂部,為您所在區域的一個或多個控制器使用屬性路由,其余的使用您設置的默認值; 例如,

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.Routes.MapMvcAttributeRoutes();

        context.MapRoute(
            name: "Admin",
            url: "Admin/{controller}/{action}/{id}",
            defaults: new { area = "Admin", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

那么你兩者都有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM