如何从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> }