[英]Asp.Net Routing - Display complete URL
我有一個域“ http://www.abc.com”。 我已經在此域上部署了ASP.net MVC4應用程序。 我還在RouteConfig.cs中配置了默認路由,如下所示
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "MyApp", action = "Home", id = UrlParameter.Optional }
);
上面的映射確保了任何嘗試訪問“ http://www.abc.com”的人都會自動顯示“ http://www.abc.com/MyApp/Home”頁面
一切正常,但瀏覽器中的地址欄顯示“ http://www.abc.com”,而不是“ http://www.abc.com/MyApp/Home”。 有什么方法可以強制瀏覽器顯示完整的URL,包括控制器和Action?
您需要進行某種形式的url重寫。 最快的方法可能是將RewritePath調用添加到Global.asax中的BeginRequest中。 在您的情況下,可能是這樣的:
void Application_BeginRequest(Object sender, EventArgs e)
{
string originalPath = HttpContext.Current.Request.Path.ToLower();
if (originalPath == "/") //Or whatever is equal to the blank path
Context.RewritePath("/MyApp/Home");
}
一種改進是從路由表中動態提取URL以進行替換。 或者,您可以使用Microsoft URL Rewrite ,但這是更復雜的IMO。
一種選擇是將您的默認路由設置為一個新的控制器(可能稱為BaseController
並帶有一個Root
動作:
public class BaseController : Controller
{
public ActionResult Root()
{
return RedirectToAction("Home","MyApp");
}
}
並修改RouteConfig
使其指向根請求:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Base", action = "Root", id = UrlParameter.Optional }
);
只需刪除默認參數,即可在此處得到解答:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.