[c#] MVC Razor 마크 업에서 쿼리 문자열 매개 변수를 가져 오는 방법은 무엇입니까?

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 에서 쿼리 문자열 값을 얻으려면 경로 Query에서 개체 를 사용해야 합니다 Context.Request. 따라서 다음과 같습니다.

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

pure 대신 struct를 반환 StringValues("1")하기 때문에 문에서 사용 하고 있습니다. 그것이 내가 찾은이 scenerio의 방법을 정리합니다.QueryStringValuesstring


답변

.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’에 ‘Query’에 대한 정의가 포함되어 있지 않습니다.”라는 메시지가 표시되었지만이 방법은 작동했습니다.

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


답변

더 우아한 해결책은 컨트롤러와 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


답변