我正在寫一個MVC 4應用程序,它有控制器和許多冗長的動作名稱,並且它們創建了一個不容易記住的冗長的URL。如何縮短MVC 4中輸出URL的控制器名稱和動作名稱?
任何有關如何在MVC 4中實現短URL(最好不影響路由)的想法?可能使用自定義屬性?
我正在寫一個MVC 4應用程序,它有控制器和許多冗長的動作名稱,並且它們創建了一個不容易記住的冗長的URL。如何縮短MVC 4中輸出URL的控制器名稱和動作名稱?
任何有關如何在MVC 4中實現短URL(最好不影響路由)的想法?可能使用自定義屬性?
實際上,你可以在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開發人員來說絕對必須有工具。
可能是一個「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]);
}
}