Jilet görünümü motorunda @ karakteri kaçış


561

Görünüm motoru olarak Razor kullanarak örnek bir ASP.NET MVC 3 sitesi oluşturuyorum. Ustura sözdizimi @karakter ile başlar örn @RenderBody(). Cshtml sayfamda @test yazarsam ayrıştırma hatası verir

CS0103: Mevcut bağlamda 'test' adı mevcut değil

'@' Karakterinden nasıl kaçarım?


1
C # 'da, anahtar kelimeleri yerine değişken adları olarak işlemek için anahtar kelimeleri @ ile işaretleyebilirsiniz. Bildiğim kadarıyla, Razor'da ayrılmış anahtar kelimeleri bu şekilde kullanmak imkansız görünüyor.
Umutsuzluğun Grimace

1
@GrimaceofDespair, anahtar kelimeleri değişken olarak işaretlemenin yolu, ikinciyi @parantez içine almaktır . Bu şekilde yazarak bu çalışmayı @(@new)
başardım

Yanıtlar:


903

@@ yapmalı.


9
Bu, bu durumda işe yaramıyor gibi görünmektedir: @RazorCodePart1 @@ @RazorCodePart2örneğin, iki Razor kod parçacığı arasındaki değişmez bir @.
Josh

27
<text> </text> veya @: 'ı deneyin
Kasper Skov

89
En iyi çözüm, @ -character için HTML kodlu karakter dizesini kullanmaktır: & # 64;
WoIIe

9
<style>Ustura sayfamda bir etiket var , bu da '@media {}' yönergesini yerleştirmek zorunda, bu yüzden html kodlaması bir seçenek değil; sadece @@ çalışır.
Triynko

12
Href kullanımında @ ("@")
Asiri Dissanayaka

145

Jilet @ kaçış karakterini sembollere ...

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

veya

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

3
Bu yöntem, @media css sayfalarında da çalışacağı için en iyisi gibi görünüyor, oysa HTML varlık yolu muhtemelen çalışmaz.
ChrisF

1
Güzel! Çok teşekkürler :)
Ashkan Sirous

1
Çivilenmişsin, Teşekkürler :)
Pankaj Parkar

1
İyi çalıştı. Teşekkürler.
Orion

1
Harika, bu kodu herkesin anlaması için daha kolay buluyorum
achecopar

39

Kullanım <text></text>veya daha kolay bir yolu@:


ASP.NET MVC 3 projemi MVC4'e yükseltmeye çalıştığımda (işaret iki noktasında) @: karakter dizisi sözdizimi benim için çalışmıyor. Aldığım istisna: "": "kod bloğunun başlangıcında geçerli değil. Yalnızca tanımlayıcılar, anahtar kelimeler, yorumlar," ("ve" {"geçerlidir."
Michael R

@Michael Bu çok garip. 4. sürümde kaldırmış olmaları gerekir.
Kasper Skov

Merhaba Kasper Skov, @: sorunun aslında @: ile ilgili olmadığını gördüm. Gereksiz yere bir @if () {} bloğunda @Model kullanmakla ilgiliydi. Düzeltme, Model üzerindeki işareti atmaktı. Zaten sunucu kapsamındayken @ kullanmaktan kaçınmalıyım. stackoverflow.com/questions/12809855/…
Michael R

38

@Html.Raw("@")Bana her zamankinden daha güvenilir gözüküyor @@, çünkü her durumda @@kaçmayacak.

Bu nedenle:

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

olabilir:

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

Ve bunu birkaç paragraf içeren büyük bir metinde nasıl kullanabilirim? "
Yerine

24

HTML varlığı yerine kullanımını tercih ediyorum @Html.Raw("@").


12

@@, yukarıda belirtildiği gibi Razor görünümlerinde @ için kaçış karakteridir.

Ancak Razor, bir '@' sadece '@' olduğunda ve C # (veya VB.Net) kodunu işaretlediğinde çalışmaya çalışır. Bunun ana kullanımlarından biri, bir Jilet görünümünde e-posta adreslerini tanımlamaktır - bir e-posta adresindeki @ karakterinden kaçmak gerekli değildir.


Razor / VB.net için ve Prismjs kullanarak bir yol bulamadım. Yukarıdaki her şeyi <a href="@Url.Action("Edit", "Antigen", ile Yeni {Anahtar .id = item.AntigenId {)" class="btn-xs btn-primary"> Düzenle </ a>
JoshYates1980

8

Hakkında soru @RazorCodePart1 @@ @RazorCodePart2için, diziye ihtiyacınız var:

@RazorCodePart1 @:@@ @RazorCodePart2

Biliyorum, biraz garip görünüyor, ama işe yarıyor ve kod blokları arasında '@' gerçek karakterini alacak.


7

Ben de aynı problemi yaşadım. @ İle metin koyarak bir değişken ilan ettim.

@{
   var twitterSite = "@MyTwitterSite";
}

...

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

Bu benim için çalışan ve Açık Grafik hata ayıklayıcıları için geçerli olan tek şeydi.
Ciprian

4

bu iş benim için

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

Ya da kullanabilirsiniz: @@ Alan_van_Buuren

: D



1

CSHTML dosyasına bir değişken ekleyin var myVariable = @"@";

ve düzeninize ekleyin <span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>


0

Yukarıdaki tüm seçenekleri denedim ve hiçbiri işe yaramadı. İşte ben bunu yaptım:

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

Değişken bir dize oluşturdum ve tüm RegEx desen kodunu geçtim, sonra html'deki değişkeni kullandım ve Razor onunla harikaydı.



0

Aslında @, bir Değeri bağlamak için Razor sözdizimi Anahtar Kelimeleri veya değişken / model için kullanılmalıdır.

Örneğin: eğer test değeri {@ var test = "ABC"} ile atanmışsa, html bölümünde @test her yerde cshtml sayfası olduğu için değeri ayarlara göre alabilirsiniz. aksi takdirde, @ Html.DisplayName ("test") olarak basit kullanım


0

Bu sorunun eski olduğunu biliyorum, ama yukarıdakilerin hepsini denedim ve bir URL içinde ASP.NET tam çerçeve (MVC 5) "@" karakteri kaçmak bana yardımcı olmadı. Terje Solem'in cevabına dayanarak UTF-8 kodu %40benim için çalıştı. bu ulaşmaya çalıştığım orijinal URL:

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

ve içindeki kodla:

https://unpkg.com/%40google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.