我正在尝试提取网址的参数,如下所示。
/管理/客户/编辑/ 1
/管理/产品/编辑/ 18?允许=真
/管理/产品/创建?允许= TRUE 的
有人可以帮忙吗?谢谢!
答案 0 :(得分:88)
<强>更新强>
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();
}
}
在默认情况下将路由映射添加到global.asax.cs文件将处理/ administration / part。或者你可能想看看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"];
答案 1 :(得分:6)
public ActionResult Index(int id,string value)
此函数从URL获取值 之后,您可以使用以下功能
Request.RawUrl
- 返回当前页面的完整网址
RouteData.Values
- 返回网址值
Request.Params
- 返回名称值集合
答案 2 :(得分:1)
您可以将ControllerContext.RoutValues对象中的这些参数列表作为键值对。
您可以将其存储在某个变量中,并在逻辑中使用该变量。
答案 3 :(得分:0)
为了获取参数值,您可以使用RouteData。
更多背景会很好。为什么你需要首先“提取”它们?你应该有一个像:public ActionResult Edit(int id, bool allowed) {}
答案 4 :(得分:0)
我写了这个方法:
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))
{
}
答案 5 :(得分:-5)
我不熟悉ASP.NET,但我想你可以使用 split 函数使用/ as分隔符将其拆分为数组,然后抓住最后一个元素数组(通常是数组长度-1)来获取你想要的数据。
好的,这似乎并不适用于所有示例。
正则表达式怎么样?
.*(/|[a-zA-Z]+\?)(.*)
然后得到最后一个子表达式(.*)
,我相信它是。$+
。我不确定