我想检查Razor标记中的URL参数。例如,我该怎么做:
<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">
答案 0 :(得分:91)
<div id="wrap" class=' @(ViewContext.RouteData.Values["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
编辑01-10-2014:
由于这个问题非常受欢迎,因此这个答案得到了改进。
上面的示例只会从RouteData
获取值,因此只能从某些已注册路由捕获的查询字符串中获取。要获取查询字符串值,您必须转到当前HttpRequest
。最快的方法是调用(如TruMan所指出的)`Request.Querystring',所以答案应该是:
<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
您还可以查看RouteValues vs QueryString MVC?
编辑03-05-2019:
以上解决方案适用于 .NET Framework。
正如其他人所指出的,如果您想在 .NET Core 中获取查询字符串值,则必须使用Query
路径中的Context.Request
对象。所以它会是:
<div id="wrap" class=' @(Context.Request.Query["iframe"] == new StringValues("1") ? /*do sth*/ : /*do sth else*/')> </div>
请注意我在语句中使用StringValues("1")
因为Query
返回StringValues
结构而不是纯string
。这是我发现的这个场景的清晰方式。
答案 1 :(得分:18)
如果你使用的是.net core 2.0,那就是:
Context.Request.Query["id"]
样本使用:
<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
答案 2 :(得分:5)
我认为更优雅的解决方案是使用控制器和ViewData字典:
//Controller:
public ActionResult Action(int IFRAME)
{
ViewData["IsIframe"] = IFRAME == 1;
return View();
}
//view
@{
string classToUse = (bool)ViewData["IsIframe"] ? "iframe-page" : "";
<div id="wrap" class='@classToUse'></div>
}
答案 3 :(得分:5)
有人建议将此作为答案发布,因为其他一些答案会给出错误,例如&#39;当前上下文中不存在名称Context&#39;。
只需使用以下作品:
Request.Query["queryparm1"]
样本用法:
<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
答案 4 :(得分:2)
用于 ASP.NET Core 5.0
您可以通过将 IHttpContextAccessor
注入 Razor 页面来获取查询参数。并使用 Request.Query
对象获取任何参数的值。
示例 URL => https://localhost:44326/?MyParam=MyValue
Index.cshtml:
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<span>@HttpContextAccessor.HttpContext.Request.Query["MyParam"][0]</span>
请注意,可能存在多个具有相同名称的查询参数,因此这些值存储在一个集合中。
答案 5 :(得分:1)
没有一个答案对我有用,我得到了&#34;&#39; HttpRequestBase&#39;不包含&#39;查询&#39;&#34;的定义,但这确实有效:
HttpContext.Current.Request.QueryString["index"]
答案 6 :(得分:1)
对于Asp.net Core 2
ViewContext.ModelState["id"].AttemptedValue