2014-10-10 325 views

回答

4

Url.Action()使用路由生成URL。所以如果你想改變它,你必須改變它。它目前表示默認控制器是Home,默認操作是Index。將它們更改爲其他任何內容,然後它會給你一個不同的URL。

例如你的路由的配置可能是這樣的:

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

更改默認爲任何其他人或刪除它們:

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

注意,這樣做意味着您的網頁將只能訪問通過完整的controller/action路徑,所以你可能想創建一個登陸頁面,並將其作爲默認值。

如果你絕對需要知道一個動作的完整URL,那麼你可以這樣做。首先創建一個額外的路線並將其放在路線配置的底部。這將永遠不會被系統使用的默認:

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

然後在代碼中,你可以調用這個(不知道它在剃刀可用,但它應該是容易寫一個輔助方法):

var fullURL = UrlHelper.GenerateUrl("AbsoluteRoute", "Index", "Home", null, null, null, null, System.Web.Routing.RouteTable.Routes, Request.RequestContext, false); 
+0

看起來很合理,但我需要將主頁作爲登錄頁面。這不可行嗎? – 2014-10-10 14:28:27

+0

好的,我會更新,但...這可能是一個壞主意,尤其是對於SEO。 – DavidG 2014-10-10 14:29:23

+0

這是一個內聯網站點,所以SEO不是一個問題。 – 2014-10-10 14:30:50

1

您可能需要爲默認路線之前的Home/Index創建特定路線。然後,您可以將默認路線和主頁/索引路線指向同一地點。但是,如果您轉到基本路由,這將不會將您重定向到主頁/索引...因此,您必須添加url重定向,無論是在IIS級別(有設置都可以這樣做),或者您可以添加代碼到您的索引頁面查看網址並重定向到完整的網址。

或者,您可以刪除默認的控制器和操作值,然後將URL重定向添加到您的IIS配置,以便在您轉到根目錄時將其重定向到完整路徑。

+0

嗯有趣的方法。想想看,使用純粹的MVC,但仍然得到了我的+1。 – DavidG 2014-10-10 15:06:29

相關問題