2013-12-10 31 views

回答

1

實際上,你可以在RouteConfig.cs中指定你的路由。以下是我的應用程序的代碼:

routes.MapRoute("SignUp", "signup", new { controller = "SignUp", action = "Index" }); 
    routes.MapRoute("SignOut", "signout", new { controller = "Login", action = "SignOut" }); 
    routes.MapRoute("Login", "login", new { controller = "Login", action = "Login" }); 

此處的第二個參數(註冊,註銷,登錄)是簡短URL。如果你想要更多的東西,你可以像這樣指定路線:

routes.MapRoute("SetNewPassword", "set-new-password/{userId}/{passwordResetKey}", new { controller = "SetNewPassword", action = "Index" }); 

這裏的網址是一樣的東西/設置新密碼/ 123 /布拉布拉

新航線不影響缺省路由。只要確保你到底有沒有這個默認行:

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

順便說一句,你可以從菲爾哈克使用起來得心應手route debugger。設置和使用真的很容易(你只需要在你的Global.asax.cs中註釋/取消註釋一行)。對於每個Asp.Net MVC開發人員來說絕對必須有工具。

0

可能是一個「catchall」路由將幫助你。

你可以建立一個包羅萬象的類型路線,指示所有/一些要求的具體行動和控制,是這樣的:

routes.MapRoute( 「ShortUrls」, 「(名稱)」 , new {controller =「ShortUrl」,action =「Index」,name = UrlParameter.Optional} ); (取決於您的路由設置的其餘部分,您可能不希望這樣做,因爲它可能會導致一些嚴重的路由頭痛 - 但這是爲了簡單起見,此處適用)

然後,只需根據指定的值將您的動作重定向到所需的URL:

public class ShortUrlController : Controller 
{ 
    // 
    // GET: /ShortUrl/ 

    public ActionResult Index(string name) 
    { 
    var urls = new Dictionary<string, string>(); 
    urls.Add("disney", "http://..your lengthy url"); 
    urls.Add("scuba", "http://another..lengthy url"); 
    return Redirect(urls[name]); 
    } 
} 
相關問題