簡體   English   中英

ASP.NET MVC - 提取 URL 的參數

[英]ASP.NET MVC - Extract parameter of an URL

我正在嘗試提取我的 URL 的參數,就像這樣。

/管理/客戶/編輯/1

提取物: 1

/Administration/Product/Edit/18?allowed=true

摘錄: 18?allowed=true

/Administration/Product/Create?allowed=true

提取: ?allowed=true

有人可以幫忙嗎? 謝謝!

更新

RouteData.Values["id"] + Request.Url.Query

將匹配您的所有示例


您要實現的目標並不完全清楚。 MVC 通過模型綁定為您傳遞 URL 參數。

public class CustomerController : Controller {

  public ActionResult Edit(int id) {

    int customerId = id //the id in the URL

    return View();
  }

}


public class ProductController : Controller {

  public ActionResult Edit(int id, bool allowed) { 

    int productId = id; // the id in the URL
    bool isAllowed = allowed  // the ?allowed=true in the URL

    return View();
  }

}

在默認處理 /administration/ 部分之前,將路由映射添加到 global.asax.cs 文件。 或者您可能想查看 MVC 區域。

routes.MapRoute(
  "Admin", // Route name
  "Administration/{controller}/{action}/{id}", // URL with parameters
  new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

如果它是您所追求的原始 URL 數據,那么您可以使用控制器操作中可用的各種 URL 和請求屬性之一

string url = Request.RawUrl;
string query= Request.Url.Query;
string isAllowed= Request.QueryString["allowed"];

聽起來Request.Url.PathAndQuery可能就是你想要的。

如果您想訪問原始發布的數據,您可以使用

string isAllowed = Request.Params["allowed"];
string id = RouteData.Values["id"];
public ActionResult Index(int id,string value)

此函數從 URL 獲取值之后,您可以使用以下函數

Request.RawUrl - 返回當前頁面的完整 URL

RouteData.Values - 返回 URL 值的集合

Request.Params - 返回名稱值集合

我寫了這個方法:

    private string GetUrlParameter(HttpRequestBase request, string parName)
    {
        string result = string.Empty;

        var urlParameters = HttpUtility.ParseQueryString(request.Url.Query);
        if (urlParameters.AllKeys.Contains(parName))
        {
            result = urlParameters.Get(parName);
        }

        return result;
    }

我這樣稱呼它:

string fooBar = GetUrlParameter(Request, "FooBar");
if (!string.IsNullOrEmpty(fooBar))
{

}

您可以在 ControllerContext.RoutValues 對象中以鍵值對的形式獲取這些參數列表。

您可以將其存儲在某個變量中,然后在邏輯中使用該變量。

為了獲取參數的值,您可以使用RouteData

更多的上下文會很好。 為什么首先需要“提取”它們? 你應該有一個像這樣的動作:

public ActionResult Edit(int id, bool allowed) {}

我對 ASP.NET 不熟悉,但我想您可以使用split函數將其拆分為使用 / 作為分隔符的數組,然后獲取數組中的最后一個元素(通常是數組長度 -1)以獲取提取物你要。

好的,這似乎不適用於所有示例。

正則表達式呢?

.*(/|[a-zA-Z]+\?)(.*)

然后得到最后一個子表達式(.*) ,我相信它是 .Net 中的$+ ,我不確定

暫無
暫無

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

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