Escape @ karakter di mesin pisau cukur


561

Saya membuat contoh situs ASP.NET MVC 3 menggunakan Razor sebagai view engine. Sintaks silet dimulai dengan @karakter mis @RenderBody(). Jika saya menulis @test di halaman cshtml saya itu memberi saya kesalahan parse

CS0103: Nama 'tes' tidak ada dalam konteks saat ini

Bagaimana cara saya keluar dari karakter '@'?


1
Di C #, Anda dapat menandai kata kunci dengan @ untuk memperlakukannya sebagai nama variabel daripada kata kunci. Dengan semua yang saya tahu, tampaknya mustahil untuk menggunakan kata kunci yang disediakan di Razor dengan cara ini.
Meringis Putus Asa

1
@GrimaceofDespair cara untuk tetap menandai kata kunci sebagai variabel adalah dengan menyertakan yang kedua @di kurung kurawal. Saya berhasil membuatnya bekerja dengan menuliskannya seperti ini:@(@new)
strizzwald

Jawaban:


903

@@ harus melakukannya.


9
Tampaknya ini tidak berfungsi dalam kasus ini: @RazorCodePart1 @@ @RazorCodePart2misalnya literal @ antara dua cuplikan kode Razor.
Josh M.

27
coba <text> </text> atau @:
Kasper Skov

89
Solusi terbaik adalah menggunakan string karakter yang disandikan-HTML untuk @ -character: & # 64;
WoIIe

9
Saya punya <style>tag di halaman pisau cukur saya, yang harus menyematkan arahan '@media {}', jadi pengodean html bukan opsi; hanya @@ berfungsi.
Triynko

12
Dalam penggunaan href @ ("@")
Asiri Dissanayaka

145

Razor @ escape char toimbol ...

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

atau

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

3
Metode ini tampaknya yang terbaik karena juga akan berfungsi untuk hal-hal @ media css, sedangkan cara entitas HTML mungkin tidak akan.
ChrisF

1
Bagus! Terima kasih banyak :)
Ashkan Sirous

1
Anda berhasil, Terima kasih :)
Pankaj Parkar

1
Bekerja dengan baik. Terima kasih.
Orion

1
Hebat, saya menemukan kode ini lebih mudah bagi semua orang untuk memahaminya
achecopar

39

gunakan <text></text>atau cara yang lebih mudah@:


Anehnya (pada tanda titik dua) @: sintaks urutan karakter tidak berfungsi untuk saya, ketika saya mencoba untuk memutakhirkan proyek ASP.NET MVC 3 saya ke MVC4. Pengecualian yang saya dapatkan adalah: "": "tidak valid pada awal blok kode. Hanya pengidentifikasi, kata kunci, komentar," ("dan" {"yang valid."
Michael R

@Michael Itu aneh. Mereka harus menghapusnya di versi 4.
Kasper Skov

Hai Kasper Skov, saya menemukan masalah @: sebenarnya tidak terkait dengan @: sama sekali. Itu terkait dengan penggunaan @Model yang tidak perlu, di blok @jika () {}. Cara mengatasinya adalah dengan menjatuhkan tanda pada Model. Saya harus menghindari menggunakan @ ketika sudah dalam cakupan server. stackoverflow.com/questions/12809855/…
Michael R

38

@Html.Raw("@")Sepertinya saya bahkan lebih dapat diandalkan daripada @@, karena tidak dalam semua kasus @@akan melarikan diri.

Karena itu:

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

akan menjadi:

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

Dan bagaimana saya menggunakan ini pada teks besar dengan beberapa paragraf? Saya telah mencoba dengan `bukannya" tetapi hasilnya dipertanyakan. Tidak ada kesalahan pada baris kosong tapi kesalahan pada karakter `.
EPurpl3

24

Alih-alih entitas HTML saya lebih suka menggunakan @Html.Raw("@").


12

@@ adalah karakter pelarian untuk @ dalam tampilan Razor seperti yang dinyatakan di atas.

Namun Razor mencoba untuk bekerja ketika '@' hanya '@' dan di mana itu menandai kode C # (atau VB.Net). Salah satu kegunaan utama untuk ini adalah untuk mengidentifikasi alamat email dalam tampilan Razor - tidak perlu keluar dari karakter @ dalam alamat email.


Saya belum menemukan cara untuk Razor / VB.net dan menggunakan Prismjs. Saya mencoba semuanya di atas untuk <a href="@Url.Action("Edit", "Antigen", Baru Dengan {Key .id = item.AntigenId})" class="btn-xs btn-primary"> Edit </ a>
JoshYates1980

8

Untuk pertanyaan tentang @RazorCodePart1 @@ @RazorCodePart2, Anda perlu urutan:

@RazorCodePart1 @:@@ @RazorCodePart2

Saya tahu, ini terlihat agak aneh, tetapi berhasil dan Anda akan mendapatkan karakter literal '@' di antara blok kode.


7

Saya hanya punya masalah yang sama. Saya menyatakan variabel yang meletakkan teks saya dengan @.

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

Ini adalah satu-satunya yang bekerja untuk saya dan berlaku untuk debug Open Graph.
Ciprian

4

ini bekerja untuk saya

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

Atau Anda dapat menggunakan: @@ Alan_van_Buuren

: D



1

cukup tambahkan variabel dalam file CSHTML var myVariable = @"@";

dan tambahkan ke tata letak Anda <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>


0

Saya mencoba semua opsi di atas dan tidak ada yang berhasil. Inilah yang saya lakukan yang berhasil:

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

Saya membuat variabel string dan meneruskan semua kode pola RegEx ke dalamnya, kemudian menggunakan variabel dalam html, dan Razor keren dengan itu.



0

Sebenarnya @ harus digunakan dengan sintaksis Razor Keywords atau pada variabel / model untuk mengikat suatu Nilai.

Untuk Misalnya: jika tes diberikan dengan nilai yaitu @ {var test = "ABC"} maka Anda bisa mendapatkan nilai dengan pengaturan karena @test di mana saja adalah halaman cshtml di bagian html. jika tidak, gunakan sederhana sebagai @ Html.DisplayName ("test")


0

Saya tahu pertanyaan ini sudah lama, tetapi saya mencoba semua hal di atas dan itu tidak membantu saya keluar dari karakter "@" dalam kerangka penuh ASP.NET (MVC 5) di dalam URL. Berdasarkan jawaban Terje Solem, kode UTF-8 %40bekerja untuk saya. ini adalah URL asli yang saya coba jangkau:

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

dan dengan kode di dalamnya:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.