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의 방법을 정리합니다.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>
더 우아한 해결책은 컨트롤러와 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>
}
return View(new SomeViewModel{ IsIFrame = IFrame });
Asp.net Core 2 용
ViewContext.ModelState["id"].AttemptedValue
AttempValue
– 만약 paramter가 쿼리 문자열에 존재하지 않는다면 예외를 얻게 될 것이므로 먼저 확인해야합니다 :@if (ViewContext.ModelState["id"] != null)...