Nhân vật Escape @ trong công cụ xem dao cạo


561

Tôi đang tạo một trang web ASP.NET MVC 3 mẫu bằng cách sử dụng dao cạo làm công cụ xem. Cú pháp dao cạo bắt đầu bằng @ký tự, vd @RenderBody(). Nếu tôi viết @test trên trang cshtml của tôi, nó sẽ cho tôi lỗi phân tích cú pháp

CS0103: Tên 'thử nghiệm' không tồn tại trong bối cảnh hiện tại

Làm cách nào để thoát ký tự '@'?


1
Trong C #, bạn có thể đánh dấu các từ khóa bằng @ để coi chúng là tên biến thay vì từ khóa. Với tất cả những gì tôi biết, dường như không thể sử dụng các từ khóa dành riêng trong Dao cạo theo cách này.
Nỗi sợ hãi tuyệt vọng

1
@GrimaceofDespair cách để vẫn đánh dấu các từ khóa là các biến là để đặt cái thứ hai @trong dấu ngoặc nhọn. Tôi đã xoay sở để có được tác phẩm này bằng cách viết nó theo cách này:@(@new)
strizzwald

Câu trả lời:


903

@@ Hãy làm nó.


9
Điều này dường như không hoạt động trong trường hợp này: @RazorCodePart1 @@ @RazorCodePart2ví dụ: một chữ @ giữa hai đoạn mã Dao cạo.
Josh M.

27
thử <text> </ text> hoặc @:
Kasper Skov

89
Giải pháp tốt nhất sẽ là sử dụng chuỗi ký tự được mã hóa HTML cho @ -character: & # 64;
WoIIe

9
Tôi đã có một <style>thẻ trong trang dao cạo của mình, nó phải nhúng một lệnh '@media {}', vì vậy mã hóa html không phải là một tùy chọn; chỉ @@ hoạt động.
Triynko

12
In href sử dụng @ ("@")
Asiri Dissanayaka

145

Dao cạo @ thoát char đến biểu tượng ...

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

hoặc là

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

3
Phương pháp này có vẻ tốt nhất vì nó cũng sẽ hoạt động cho các công cụ css @media, trong khi cách thực thể HTML có thể sẽ không.
ChrisF

1
Đẹp! Cảm ơn rất nhiều :)
Ashkan Sirous

1
Bạn đóng đinh nó, Cảm ơn :)
Pankaj Parkar 23/07/17

1
Làm việc tốt. Cảm ơn.
Orion

1
Thật tuyệt, tôi thấy mã này dễ dàng hơn cho mọi người hiểu về nó
achecopar

39

sử dụng <text></text>hoặc cách dễ dàng hơn@:


Thật kỳ quặc (cú pháp dấu hai chấm) @: cú pháp trình tự ký tự không hoạt động đối với tôi, khi tôi cố gắng nâng cấp dự án ASP.NET MVC 3 của mình lên MVC4. Ngoại lệ tôi nhận được là: "": "không hợp lệ khi bắt đầu khối mã. Chỉ có số nhận dạng, từ khóa, nhận xét" ("và" {"là hợp lệ."
Michael R

@Michael Thật lạ. Họ phải xóa nó trong phiên bản 4.
Kasper Skov

Xin chào Kasper Skov, tôi thấy vấn đề @: không thực sự liên quan đến @: cả. Nó có liên quan đến việc sử dụng @Model một cách không cần thiết, trong khối @if () {}. Cách khắc phục là bỏ dấu ở Model. Tôi cần tránh sử dụng @ khi đã ở trong phạm vi máy chủ. stackoverflow.com/questions/12809855/ trộm
Michael R

38

@Html.Raw("@")đối với tôi dường như còn đáng tin cậy hơn @@, vì không phải trong mọi trường hợp@@ sẽ thoát ra.

Vì thế:

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

sẽ là:

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

Và làm thế nào để tôi sử dụng điều này trên một văn bản lớn với một vài đoạn? Tôi đã thử với `thay vì" nhưng kết quả rất đáng nghi ngờ. Không có lỗi nào trên các hàng trống nhưng lỗi về ký tự.
EPurpl3

24

Thay vì thực thể HTML, tôi thích sử dụng @Html.Raw("@").


12

@@ là ký tự thoát cho các lượt xem @ trong Dao cạo như đã nêu ở trên.

Tuy nhiên, dao cạo cố gắng hoạt động khi '@' chỉ là '@' và ở đó nó đánh dấu mã C # (hoặc VB.Net). Một trong những cách sử dụng chính cho việc này là xác định địa chỉ email trong chế độ xem Dao cạo - không cần thiết phải thoát ký tự @ trong địa chỉ email.


Tôi chưa tìm thấy cách nào cho Dao cạo / VB.net và sử dụng Prismjs. Tôi đã thử tất cả các cách trên cho <a href="@Url.Action("Edit", "Antigen", Mới với {Key .id = item.AntigenId Bolog)" class="btn-xs btn-primary"> Chỉnh sửa </ a>
JoshYates1980

8

Đối với câu hỏi về @RazorCodePart1 @@ @RazorCodePart2, bạn cần theo trình tự:

@RazorCodePart1 @:@@ @RazorCodePart2

Tôi biết, nó có vẻ hơi kỳ lạ, nhưng nó hoạt động và sẽ giúp bạn có được ký tự chữ "@" giữa các khối mã.


7

tôi chỉ có cùng một vấn đề. Tôi đã khai báo một biến đặt văn bản của tôi với @.

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

Đây là người duy nhất làm việc cho tôi và có giá trị đối với trình gỡ lỗi Open Graph.
Ciprian

4

công việc này cho tôi

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

Hoặc yoy có thể sử dụng: @@ Alan_van_Buuren

: D


1

Bạn có thể sử dụng @@ cho mục đích này. Giốngvar email = firstName + '\@@' + domain;


1

chỉ cần thêm một biến trong tệp CSHTML var myVariable = @"@";

và thêm nó vào bố cục của bạn <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>


0

Tôi đã thử tất cả các tùy chọn ở trên và không có cách nào làm việc. Đây là những gì tôi đã làm mà làm việc:

@{
    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>

Tôi đã tạo một chuỗi biến và truyền tất cả mã mẫu RegEx vào nó, sau đó sử dụng biến trong html và dao cạo rất tuyệt với nó.


0

Tôi không thể có bất kỳ thứ nào trong số này hoạt động bên trong thuộc tính giữ chỗ của mình, vì vậy tôi đã sử dụng ký tự đặc biệt xml.

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

Xem thêm ví dụ ở đây. https://www.dvteclipse.com/documentation/svlinter/How_to_use_special_char character_in_XML.3F.html


1
Nhu cầu của tôi là thêm @ trong thẻ meta. và điều này hoạt động tốt. @@ không hoạt động ở đó.
Asiri Dissanayaka

0

Trên thực tế @ nên được sử dụng với Từ khóa cú pháp dao động hoặc với biến / mô hình để liên kết Giá trị.

Ví dụ: nếu kiểm tra được gán với giá trị tức là @ {var test = "ABC"} thì bạn có thể nhận giá trị bằng cách cài đặt vì @test ở bất cứ đâu là trang cshtml trong phần html. mặt khác, sử dụng đơn giản như @ Html.DisplayName ("test")


0

Tôi biết câu hỏi này đã cũ, nhưng tôi đã thử tất cả các câu hỏi trên và nó không giúp tôi thoát khỏi ký tự "@" trong khung đầy đủ ASP.NET (MVC 5) bên trong một URL. Dựa trên câu trả lời của Terje Solem, mã UTF-8 %40đã làm việc với tôi. đây là URL ban đầu tôi đã cố gắng tiếp cận:

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

và với mã trong đó:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.