簡體   English   中英

獲取沒有url參數的MVC路由路徑

[英]Get MVC Route Path without url parameters

在我的MVC4項目中,我有一個URL http://domain.com/ {controller} / {action} /。 為了確定哪些頁面用戶訪問並獲得當前活動的菜單項,我使用像HttpContext.Request.Url.AbsolutePath.ToLower()這樣的網址路徑

但是,在某些情況下,路徑是/ {controller} / {action} / {id}等,實際上是/ {controller} / {action} /?{id} = value

如果參數被路由規則覆蓋,如何不帶參數獲取/ {controller} / {action} /

謝謝。

您僅對控制器和動作名稱感興趣嗎?

如果是這樣,請使用控制器的RouteData屬性。

您可以像這樣使用它:

public ActionResult Index()
{
    var controller = this.RouteData.Values["controller"];
    var action = this.RouteData.Values["action"];
}

如何在當前路線之前添加一條新路線,就像這樣。

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

新路線將是這樣-

routes.MapRoute(
                name: "**Withoutparam**",
                url: "{controller}/{action}",
                defaults: new { controller = "Home", action = "Index" }
            );

請注意,您需要在RouteConfig.cs中的當前路由之前添加此路由 這是因為MVC從頂部到底部開始搜索RouteConfig文件中的路由。 一旦找到任何匹配的路由,它將停止進一步搜索。 因此,對於您的問題,當有沒有參數的路線時,它將選擇“ Withoutparam”路線。

從下面的評論中我可以理解。 在每種情況下,您都需要不帶id的url。 如果是這樣,那么我認為您可以這樣做:-

var url = new StringBuilder();

string[] partOfUrl = HttpContext.Request.Url.AbsolutePath.ToLower().split('/');

for(int count = 0; count< (partOfUrl.Length - 1); count++) 
{   
   url.Append(partOfLength[count] + "/") 
}

使用url.ToString()作為所需的URL。

暫無
暫無

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

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