[英]How to get query string parameter from MVC Razor markup?
我想檢查我的 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>
編輯 2014 年 1 月 10 日:由於這個問題很受歡迎,所以這個答案已經得到改進。
上面的示例只會從RouteData
獲取值,因此只能從某些已注冊路由捕獲的查詢字符串中獲取值。 要獲取查詢字符串值,您必須獲取當前的HttpRequest
。 最快的方法是調用(正如 TruMan 指出的那樣)`Request.Querystring',所以答案應該是:
<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>
您還可以檢查RouteValues 與 QueryString MVC?
編輯 03-05-2019:以上解決方案適用於.NET Framework。
正如其他人指出的那樣,如果您想在.NET Core中獲取查詢字符串值,則必須使用Context.Request
路徑中的Query
對象。 所以它會是:
<div id="wrap" class=' @(Context.Request.Query["iframe"] == new StringValues("1") ? /*do sth*/ : /*do sth else*/')> </div>
請注意,我在語句中使用了StringValues("1")
,因為Query
返回StringValues
結構而不是純string
。 這是我發現的這個場景的清理方式。
如果您使用的是 .net core 2.0,這將是:
Context.Request.Query["id"]
示例用法:
<a href="@Url.Action("Query",new {parm1=Context.Request.Query["queryparm1"]})">GO</a>
建議將此作為答案發布,因為其他一些答案會給出錯誤,例如“名稱上下文在當前上下文中不存在”。
只需使用以下作品:
Request.Query["queryparm1"]
示例用法:
<a href="@Url.Action("Query",new {parm1=Request.Query["queryparm1"]})">GO</a>
沒有一個答案對我有用,我收到“‘HttpRequestBase’不包含‘查詢’的定義”,但這確實有效:
HttpContext.Current.Request.QueryString["index"]
適用於 ASP.NET Core 5.0
您可以通過將IHttpContextAccessor
注入 Razor 頁面來獲取查詢參數。 並使用Request.Query
對象獲取任何參數的值。
示例 URL => https://localhost:44326/?MyParam=MyValue
索引.cshtml:
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
<span>@HttpContextAccessor.HttpContext.Request.Query["MyParam"][0]</span>
請注意,可能有多個具有相同名稱的查詢參數,因此這些值存儲在一個集合中。
我認為更優雅的解決方案是使用控制器和 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>
}
對於 Asp.net Core 2
ViewContext.ModelState["id"].AttemptedValue
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.