Escape @ Character in Razor View Engine
-
26-09-2019 - |
سؤال
أقوم بإنشاء موقع ASP.NET MVC 3 باستخدام Razor كمحرك عرض. يبدأ بناء جملة الحلاقة بـ @
شخصية على سبيل المثال @RenderBody()
. إذا كتبت @Test على صفحة CSHTML الخاصة بي ، فإنه يعطيني خطأ في التحليل
CS0103: اسم "اختبار" غير موجود في السياق الحالي
كيف أهرب من شخصية "@"؟
المحلول
@@
يجب القيام به.
نصائح أخرى
الحلاقة @ Escape Char إلى الرموز ...
<img src="..." alt="Find me on twitter as @("@username")" />
أو
<img src="..." alt="Find me on twitter as @("@")username" />
استعمال <text></text>
أو أسهل طريقة @:
@Html.Raw("@")
يبدو لي أنه أكثر موثوقية من @@
, ، لأنه ليس في جميع الحالات @@
سوف يهرب.
لذلك:
<meta name="twitter:site" content="@twitterSite">
سيكون:
<meta name="twitter:site" content="@Html.Raw("@")twitterSite">
بدلاً من كيان HTML ، أفضل استخدام @Html.Raw("@")
.
is is excart for @ in Razor Views كما هو مذكور أعلاه.
ومع ذلك ، يحاول Razor العمل عندما يكون "@" مجرد "@" وحيث يمثل رمز C# (أو vb.net). أحد الاستخدامات الرئيسية لهذا هو تحديد عناوين البريد الإلكتروني ضمن عرض الحلاقة - لا ينبغي أن يكون من الضروري الهروب من الحرف @ في عنوان البريد الإلكتروني.
للسؤال عن @RazorCodePart1 @@ @RazorCodePart2
, ، تحتاج إلى التسلسل:
@RazorCodePart1 @:@@ @RazorCodePart2
أعلم أنه يبدو غريباً بعض الشيء ، لكنه يعمل وسيحصل على الحرف الحرفي "@" بين كتل التعليمات البرمجية.
أنا فقط كان نفس المشكلة. أعلنت متغير وضع نصي مع @.
@{
var twitterSite = "@MyTwitterSite";
}
...
<meta name="twitter:site" content="@twitterSite">
هذا العمل بالنسبة لي
<meta name="author" content="Alan van Buuren @("@Alan_van_Buuren")">
أو يمكن استخدام Yoy: alan_van_buuren
:د
جربت جميع الخيارات أعلاه ولم يعمل أي منها. هذا ما فعلته نجح:
@{
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>
لقد قمت بإنشاء سلسلة متنوعة وتجاوزت جميع رمز نمط regex فيه ، ثم استخدمت المتغير في HTML ، وكان الحلاقة باردة معها.
يمكنك استخدام هذا الغرض. مثل var email = firstName + '\@@' + domain;
فقط أضف متغيرًا في ملف CSHTML
var myVariable = @"@";
وأضفه إلى تخطيطك
<span class="my-class"><a href="@myVariale" target="_blank" >link text</a></span>
لم أتمكن من الحصول على أي من هؤلاء للعمل داخل سمة العنصر النائب الخاص بي ، لذلك استخدمت شخصية XML الخاصة.
<input type="text" placeholder="fex: firstname@lastname.com"/>
رؤية المزيد من الأمثلة هنا.https://www.dvteclipse.com/documentation/svlinter/how_to_use_special_characters_in_xml.3f.html
في الواقع ، يجب استخدام @ مع الكلمات الرئيسية للبناء الشفافة أو إلى المتغير/النموذج لربط القيمة.
على سبيل المثال: إذا تم تعيين الاختبار بقيمة ie @ {var test = "abc"} ، يمكنك الحصول على القيمة عن طريق الإعدادات كـ test في أي مكان هي صفحة CSHTML في جزء html. خلاف ذلك ، الاستخدام البسيط مثل @html.displayName ("اختبار")