如何从MVC剃刀标记查询字符串参数?(How to get query string paramet

2019-06-25 20:59发布

我想要查询的网址参数在我的剃刀的标记。 例如,我怎么做这样的事情:

<div id="wrap" class="@{if (URL "IFRAME" PARAMETER EQUALS 1) iframe-page}">

Answer 1:

类似的线程

<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方式。



Answer 2:

如果您使用的是.NET 2.0的核心,这将是:

Context.Request.Query["id"]

用法示例:

<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>


Answer 3:

我觉得更优雅的解决方案是使用控制器和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>
 }


Answer 4:

有人建议张贴此作为一个答案,因为一些其他的答案是给像“名称上下文没有在当前的背景下存在”的错误。

只是使用了以下工作:

Request.Query["queryparm1"]

用法示例:

<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>


Answer 5:

Noneof的答案为我工作,我得到“‘HttpRequestBase’不包含‘查询’的定义”,但这并工作:

HttpContext.Current.Request.QueryString["index"]


Answer 6:

对于Asp.net酷睿2

ViewContext.ModelState["id"].AttemptedValue


文章来源: How to get query string parameter from MVC Razor markup?