簡體   English   中英

Asp.Net路由-顯示完整的URL

[英]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 }
);

只需刪除默認參數,即可在此處得到解答:

如何強制MVC路由到Home / Index而不是root?

暫無
暫無

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

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