如何从MVC Razor标记获取查询string参数?

我想检查我的Razor标记中的URL参数。 例如,我该如何做这样的事情:

<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> 

编辑01-10-2014:由于这个问题如此受欢迎,这个答案已经改善。

上面的例子只会从RouteData获取值,所以只能从被某个注册路由捕获的querystrings中获取。 要获得查询string的值,你必须得到当前的HttpRequest 。 最快的方法是调用(如TruMan指出的)`Request.Querystring',所以答案应该是:

 <div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div> 

你也可以检查RouteValues vs QueryString MVC?

我认为更优雅的解决scheme是使用控制器和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> }