[英]ASP.NET MVC - Extract parameter of an URL
我正在嘗試提取我的 URL 的參數,就像這樣。
/管理/客戶/編輯/1
/Administration/Product/Edit/18?allowed=true
/Administration/Product/Create?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.