将URL参数存储为字符串变量ASP.NET

时间:2015-08-18 13:33:49

标签: c# asp.net-mvc linq

我正在使用ASP.NET MVC并且我有一个看起来像这样的/Application/Errors/DependingWhichHyperlinkClicked最后一个参数通过此代码传递给URL <a href="@Url.Action("Errors", new { id=item.Application})"> @Html.DisplayFor(modelItem => item.Application) </a>我想采取URL的最后一部分并将其存储在变量中。然后,此变量将用于LINQ查询,以显示与URL的最终参数匹配的结果。最终参数可以根据点击的超链接而改变,因为我想在不同的页面上显示不同的结果。

我认为代码看起来与此类似,但我可能错了......

var queryString = ...
var applications = from s in db.ElmahErrors
                           where s.Application == queryString
                           select s;

我只是不确定要写入什么才能使queryString变量接受URL参数。任何帮助将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:2)

如果您使用默认路由,则可以使用RouteData.Values属性: -

RouteData.Values["id"]

答案 1 :(得分:0)

让我们说“yourUrl”包含:“/ Application / Errors / dependentWhichHyperlinkClicked”

这是一个简单的解决方案:

var splited = yourUrl.Split('/');
var queryString = splited.last();

您还可以使用RegEx提取最终参数:

var queryString = Regex.Match(yourUrl, @"\/Application\/Errors\/(.*)").Groups[1];

此选项“更安全”(例如,如果您的参数中包含/,则拆分将仅返回参数的最后部分),但您必须改进我的基本正则表达式。