it-source

MVC 레이저 마크업에서 쿼리 문자열 매개 변수를 가져오는 방법은 무엇입니까?

criticalcode 2023. 5. 21. 11:37
반응형

MVC 레이저 마크업에서 쿼리 문자열 매개 변수를 가져오는 방법은 무엇입니까?

제 레이저 마크업에서 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>

EDIT 01-10-2014: 이 질문이 매우 인기가 있기 때문에 답변이 개선되었습니다.

위의 예에서는 다음 값만 가져옵니다.RouteData따라서 일부 등록 경로에 의해 탐지된 쿼리 문자열에서만 가능합니다.쿼리 문자열 값을 가져오려면 현재 값으로 이동해야 합니다.HttpRequest가장 빠른 방법은 (TruMan이 지적한 바와 같이) '요청'으로 전화하는 것입니다.Querystring'이므로 다음과 같이 대답해야 합니다.

<div id="wrap" class=' @(Request.QueryString["iframe"] == 1 ? /*do sth*/ : /*do sth else*/')> </div>

RouteValues vs QueryString MVC도 확인할 수 있습니까?

EDIT 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순수 대신 구조string제가 찾은 이 시나리오에 대한 가장 깨끗한 방법입니다.

.net core 2.0을 사용하는 경우 다음과 같습니다.

Context.Request.Query["id"]

샘플 사용량:

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

일부 다른 답변에서 'Context라는 이름이 현재 컨텍스트에 존재하지 않습니다'와 같은 오류가 발생하고 있기 때문에 이를 답변으로 게시하는 것이 제안되었습니다.

다음 작업만 사용할 수 있습니다.

Request.Query["queryparm1"]

샘플 사용량:

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

"HttpRequestBase"에는 'Query'에 대한 정의가 포함되어 있지 않습니다."라는 메시지가 표시되었지만 다음과 같은 답변이 제공되었습니다.

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

ASP.NET Core 5.0용

입력하여 쿼리 매개 변수를 가져올 수 있습니다.IHttpContextAccessor레이저 페이지로 이동합니다.다음을 사용하여 매개 변수의 값을 가져옵니다.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

언급URL : https://stackoverflow.com/questions/11248064/how-to-get-query-string-parameter-from-mvc-razor-markup

반응형