簡體   English   中英

如何僅在ASP.NET MVC中基於控制器名稱路由URL

[英]How to route URL based on controller name only in ASP.NET MVC

我想當URL僅包含一個控制器(無動作)時,它將自動針對輸入的控制器的Index動作。 但是,我仍然希望默認路由成為登錄頁面。

默認路由為:

routes.MapRoute(
                name: "Primary",
                url: "{controller}/{action}/{id}",
                defaults: new {controller = "Account", action = "SignIn", id = UrlParameter.Optional}
                );

第二條路線應該是什么樣? 因此,mydomain.com / Account應該轉到Controller = Account,Action = Index,同時保持domain / controller / action / params的正常結構不變。

謝謝!

routes.MapRoute(
name: "Default",
url: "ApplicantProfile/{action}/{id}",
defaults: new { controller = "ApplicantProfile", action = "Start", id = UrlParameter.Optional }
);


routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);

假設您有ApplicantProfileController,HomeController和OtherController,這將導致:

/ApplicantProfile → ApplicantProfileController.Start
/Other → OtherController.Index
/SomeOtherPath → default 404 error page
/ → default 404 error page

有關路由的介紹,請參見http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/asp-net-mvc-routing-overview-cs 它有點舊,但是涵蓋了基礎知識。

路由自上而下進行,這意味着它在路由表中的第一個匹配項處停止。 在第一種情況下,您將首先匹配您的ApplicantProfile路由,以便使用控制器。 第二種情況從路徑中獲取Other,找到匹配的控制器並使用它。 最后2個未找到匹配的控制器,並且未指定默認值,因此返回默認404錯誤。 我建議放置一個適當的錯誤處理程序。 在此處和此處查看答案。

暫無
暫無

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

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