簡體   English   中英

如何從 MVC Razor 標記獲取查詢字符串參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM