我想要查询的网址参数在我的剃刀的标记。 例如,我怎么做这样的事情:
<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">
我想要查询的网址参数在我的剃刀的标记。 例如,我怎么做这样的事情:
<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">
类似的线程
<div id="wrap" class=' @(ViewContext.RouteData.Values["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
编辑2014年1月10日:由于这个问题是如此受欢迎,这个答案得到了提高。
上面的例子将只从获取值RouteData
,因此只能从其中一些注册航线抓住了查询字符串。 要获取查询字符串值,你必须得到当前HttpRequest
。 最快的方法是通过调用(如杜鲁门指出的)'的Request.QueryString”,所以答案应该是:
<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
您还可以检查RouteValues VS查询字符串MVC?
编辑2019年3月5日:上述解决方案正在为.NET框架。
正如其他人指出,如果你想获得在.NET的核心查询字符串值,你必须使用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
。 这对本之情况,我已经找到cleanes方式。
如果您使用的是.NET 2.0的核心,这将是:
Context.Request.Query["id"]
用法示例:
<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
我觉得更优雅的解决方案是使用控制器和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>
}
有人建议张贴此作为一个答案,因为一些其他的答案是给像“名称上下文没有在当前的背景下存在”的错误。
只是使用了以下工作:
Request.Query["queryparm1"]
用法示例:
<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
Noneof的答案为我工作,我得到“‘HttpRequestBase’不包含‘查询’的定义”,但这并工作:
HttpContext.Current.Request.QueryString["index"]
对于Asp.net酷睿2
ViewContext.ModelState["id"].AttemptedValue