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

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

最佳答案

Similar thread

<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 struct 而不是纯 string 。这是我发现的这个场景的清洁方式。

关于c# - 如何从 MVC Razor 标记中获取查询字符串参数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11248064/

10-13 06:55