2011-12-12 25 views
6

Öğe içinde "Değişim Salı" dizesini içeren bir değişken var. Javascript hatalarını hafifletmek için C# controller'de bu tek alıntıdan zaten kaçtım. Web sayfasında, "Bu Salı!" Gibi görünüyor.Bir MVC 3 Razor View değişkeni için tek alıntıdan kaçma

Bu en azından javascript hatalarını önler, ancak, görüntülenen asıl dizgenin onu kaçan ters eğik çizgiyi içermesini istemiyorum.

Javascript hataları zaten halledildikten sonra kaçışı nasıl geri dönüştürebilirim? Bu oldukça basit bir sorun gibi geliyor, ama ben MVC 3 ile biraz bilmiyorum. Herhangi bir ipucu çok takdir edilmektedir! Aramama, bana özel bir örnek bulamadı.

Jilet View benim kod örneği:

@foreach (var item in Model) 
{ 
    @Html.DisplayFor(modelItem => item.Name) // item.Name = "It\'s Tuesday!" 
} 
+0

Örneğinizde javascript bulunmadığında "javascript hatalarını hafifletmek için" alıntı karakterini önceden kaçmadan neden önceliyorsunuz? –

+0

Doğru, benim örneğimde javascript yok. Benim örneğim, nasıl bir şey olduğunu göstermek için çok basit bir parçacıktı. Söz konusu e-string Ben bir ters eğik çizgi kaldırmaya çalışıyorum Razor View görüntülenir. Gerçek çözüm sayfasındaki javascript elbette var. –

+0

Sayfanızda javascript olduğundan eminim, neden bir etiket için HTML olarak oluşturulmasını amaçlayan bir dizgede bir alıntıdan kaçmaya çalıştığınızı hala anlamıyorum. Neden kaçtığını anlayamam. –

cevap

21

Doğrudan kullanabileceğiniz veya kodlayabileceğiniz bir uzantı yöntemi oluşturun. Eğer bu satırlar boyunca ayrı Bunun anlamı sizin ViewModel özelliği (kötü bir fikir()

Bu test edilmemiştir ancak bir şey yoksa bunu almak öncesinde görünüme kodlamak olmaz

 

public static class HtmlExtensions 

{ 
    public static IHtmlString JavaScriptEncode(this HtmlHelper html, string item) 
    { 
     return new HtmlString(HttpUtility.JavaScriptStringEncode(item)); 
    } 
} 
 

Sen o zaman sadece @ Html.JavaScriptEncode (yourProperty) görünümünden çağrı yapabilir veya sadece kodlanmış özellik adınızı referans olarak gönderebilirsiniz.

+0

Bu yöntem harika çalıştı, teşekkür ederim! Sadece aramak için bir uzantı yöntemi yaptım ve daha sonra yöntemin geri boşluğu kaldırmasına izin verdim. Belki de bu konuyla ilgili en iyi yol olmasa da, hala Javascript'i uygularken hile yaptı. –

10

tekrar çıkış kodlamasını önlemek için kullanılabilecek aşağıdaki. Ancak bu, kendinizle doğru bir şekilde ilgilenmenize güvenir.

benim görüşlerini dilsiz yapmayı tercih
@MvcHtmlString.Create(yourString) 
+0

Bunu Uzantıyla bağlantılı olarak kullandım Yöntem. Gönderiniz için teşekkür ederiz! Maalesef yalnızca 1 cevabı doğru olarak işaretleyebilirim ve düşük itibara sahip olmaktan ötürü katılamıyorum. Ancak, bunun değeri ne olursa olsun, takdir edilir! –

+0

Ve ben gerçekten destek ihtiyacım vardı :-) – RubbleFord

0

MVCHTMLString

. Bu nedenle, görünüm için kaçmayı ele alan 'Ekran' veya 'Görünen Ad' gibi bir özellik var.

İlgili konular