면도기보기 엔진에서 @ 문자 탈출


561

Razor를 뷰 엔진으로 사용하여 샘플 ASP.NET MVC 3 사이트를 만들고 있습니다. 면도기 구문은 @문자 eg로 시작합니다 @RenderBody(). 내 cshtml 페이지에 @test를 쓰면 구문 분석 오류가 발생합니다.

CS0103 : 'test'라는 이름이 현재 컨텍스트에 없습니다.

'@'문자를 어떻게 피합니까?


1
C #에서 키워드를 @로 표시하여 키워드가 아닌 변수 이름으로 취급 할 수 있습니다. 내가 아는 한, 이런 식으로 Razor에서 예약 키워드를 사용하는 것은 불가능한 것 같습니다.
절망의 그리마

1
@GrimaceofDespair 키워드를 변수로 표시하는 방법은 두 번째 @를 중괄호로 묶는 것입니다. 나는 이런 식으로 작성하여이 작업을 수행 할 수 있었다 :@(@new)
strizzwald

답변:


903

@@ 해야합니다.


9
이 경우에는 작동하지 않는 것 같습니다 : @RazorCodePart1 @@ @RazorCodePart2예를 들어 두 개의 Razor 코드 스 니펫 사이의 리터럴 @.
Josh M.

27
<text> </ text> 또는 @ :를 시도하십시오
Kasper Skov

89
가장 좋은 해결책은 @ 문자에 HTML 인코딩 된 문자열을 사용하는 것입니다. & # 64;
WoIIe

9
내가있어 <style>HTML 인코딩 옵션이되지 않도록, 내장에 '@media {}'지시자가 내 면도기 페이지에 태그를; @@ 만 작동합니다.
Triynko

12
in href 사용 @ ( "@")
Asiri Dissanayaka

145

면도기 @ 이스케이프 문자를 기호로 ...

<img src="..." alt="Find me on twitter as @("@username")" />

또는

<img src="..." alt="Find me on twitter as @("@")username" />

3
이 방법은 @media css에서도 작동하기 때문에 가장 좋은 것처럼 보이지만 HTML 엔터티 방식은 그렇지 않을 것입니다.
ChrisF

1
좋은! 고마워 :)
Ashkan Sirous

1
감사합니다 :)
Pankaj Parkar

1
잘 작동했습니다. 감사.
오리온

1
좋아요, 저는이 코드가 모든 사람들이 이해하기 쉽도록
하셨습니다

39

사용 <text></text>하기 쉬운 방법@:


ASP.NET MVC 3 프로젝트를 MVC4로 업그레이드하려고 할 때 @ : 문자 시퀀스 구문이 작동하지 않습니다. 예외 : "": "는 코드 블록 시작시 유효하지 않습니다. 식별자, 키워드, 주석,"( "및"{ "만 유효합니다."
Michael R

@Michael 이상합니다. 그들은 버전 4에서 그것을 제거했을 것입니다.
Kasper Skov

안녕하세요 카스 퍼스 스코프, @ : 문제가 실제로 @ :와 전혀 관련이 없음을 발견했습니다. @if () {} 블록에서 @Model을 불필요하게 사용하는 것과 관련이 있습니다. 수정은 모델에서 기호를 삭제하는 것이 었습니다. 이미 서버 범위에있을 때는 @를 사용하지 않아야합니다. stackoverflow.com/questions/12809855/…
Michael R

38

@Html.Raw("@")@@모든 경우에 @@탈출 하지는 않기 때문에 나보다 훨씬 신뢰할 수있는 것 같습니다 .

따라서:

<meta name="twitter:site" content="@twitterSite">

될 것입니다 :

<meta name="twitter:site" content="@Html.Raw("@")twitterSite">

그리고 여러 단락이있는 거대한 텍스트에서 어떻게 이것을 사용합니까? "대신"로 시도했지만 결과에 의문의 여지가 있습니다. 빈 행에는 오류가
없고

24

HTML 엔터티 대신의 사용을 선호합니다 @Html.Raw("@").


12

@@는 위에서 언급 한 Razor보기에서 @의 이스케이프 문자입니다.

그러나 Razor는 '@'이 '@'일 때 C # (또는 VB.Net) 코드를 표시하는 경우 문제를 해결하려고합니다. 이를위한 주요 용도 중 하나는 Razor보기에서 이메일 주소를 식별하는 것입니다. 이메일 주소에서 @ 문자를 이스케이프 할 필요는 없습니다.


Razor / VB.net 및 Prismjs 사용 방법을 찾지 못했습니다. <a href="@Url.Action("Edit", "Antigen", {Key .id = item.AntigenId})의 새로운 기능" class="btn-xs btn-primary"> 편집 </ a>
JoshYates1980

8

에 대한 질문에 대해서는 @RazorCodePart1 @@ @RazorCodePart2다음 순서를 따라야합니다.

@RazorCodePart1 @:@@ @RazorCodePart2

조금 이상해 보이지만 작동하지만 코드 블록 사이에 문자 '@'이 표시됩니다.


7

방금 같은 문제가있었습니다. @로 텍스트를 넣는 변수를 선언했습니다.

@{
   var twitterSite = "@MyTwitterSite";
}

...

<meta name="twitter:site" content="@twitterSite">

이것은 나를 위해 일하고 Open Graph 디버거에 유효한 유일한 사람이었습니다.
Ciprian

4

나를위한이 일

<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">

또는 yoy를 사용할 수 있습니다 : @@ Alan_van_Buuren

:디



1

CSHTML 파일에 변수를 추가하십시오. var myVariable = @"@";

레이아웃에 추가하십시오 <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>


0

위의 모든 옵션을 시도했지만 아무것도 작동하지 않았습니다. 이것이 내가 한 일입니다.

@{
    string str = @"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$";
}

<td>Email</td>
<td>
   <input type="text" id="txtEmail" required name="email" pattern=@str /> 
</td>

문자열 varible을 만들고 모든 RegEx 패턴 코드를 전달한 다음 html에서 변수를 사용했으며 Razor는 멋졌습니다.


0

플레이스 홀더 속성 내에서 이들 중 어느 것도 작동하지 않으므로 xml 특수 문자를 사용했습니다.

<input type="text" placeholder="fex: firstname&#64;lastname.com"/>

여기에 더 많은 예가 있습니다. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_characters_in_XML.3F.html


1
메타 태그에 @를 추가해야했습니다. 그리고 이것은 잘 작동합니다. @@는 작동하지 않습니다.
Asiri Dissanayaka

0

실제로 @는 Razor 구문 키워드 또는 변수 / 모델과 함께 사용하여 값을 바인딩해야합니다.

예를 들어, 테스트에 @ {var test = "ABC"} 값이 할당 된 경우 @test는 html 부분의 cshtml 페이지 어디에서나 설정하여 값을 얻을 수 있습니다. 그렇지 않으면 @ Html.DisplayName ( "test")로 간단하게 사용하십시오.


0

이 질문이 오래되었다는 것을 알고 있지만 위의 모든 것을 시도했지만 URL 내부의 ASP.NET 전체 프레임 워크 (MVC 5)에서 "@"문자를 이스케이프 처리하지 못했습니다. 그래도 Terje Solem의 답변을 바탕으로 UTF-8 코드가 효과적 %40이었습니다. 이것은 내가 도달하려는 원래 URL입니다.

https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js

그리고 그 안에 코드가 있습니다 :

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.