我想检查 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
获取值,因此只能从某些注册路由捕获的查询字符串中获取值。要获得查询字符串值,您必须获得当前的 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/