2011-06-29 27 views
17

Görünümümdeki özelliklerimi görünüm modelime bağlamak için Knockout-JS kullanıyorum. Knockout-JS, model nesnelerini görüntülemek için bağlı olmak istediğiniz kontrollere eklemeniz gereken 'data-bind' adı verilen özel bir öznitelik kullanır.EditorFor/TextBoxFor/TextBox yardımcılarını kullanarak adında özel öznitelik özniteliği

Örnek:

<input type='text' name='first-name' data-bind='value: firstName'/> 

Bildirim 'veri bağlama' özelliği.

Görünüm oluşturma işleminde, bu özniteliği olan bir metin kutusu oluşturma konusunda sorun yaşıyorum. Html.EditorFor, Html.TextBoxFor ve Html.TextBox yardımcılarının özel öznitelikleri belirtmek için kullanabileceğiniz bir anonim nesne aldığının farkındayım. Bu uygulamayla ilgili tek sorun, C# değişken adlar olarak tire işaretine izin vermemesidir, bu yüzden derlenmez: @ Html.EditorFor (m => m.FirstName, new {data-bind = "value: firstName"}) ; Aklıma

tek şey (görünüm-modelinde) şudur:

public class DataBindingInput 
{ 
    public string Value { get; set; } 
    public string DataBindingAttributes { get; set } 
} 

public class MyViewModel 
{ 
    ... 
    public DataBindingValue firstName { get; set; } 
    .... 
} 

Ve "DataBindingInput.cshtml" adlı bir görünüm şablonu:

@model DataBindingInput 
<input type='text' data-binding='@Model.DataBindingAttributes' value='@Model.Value'> 

bununla tek sorun giriş adının otomatik neslini kaybederim, bu yüzden post-back üzerinde çalışmayacak çünkü model bağlayıcının nasıl bağlanacağı konusunda hiçbir fikri yok.

Bu işi nasıl yapabilirim?

+7

Bkz. Http://stackoverflow.com/questions/2520487/how-to-use-html-5-data-attributes-in-asp-net-mvc/4515095#4515095 –

+0

Teşekkürler, çalışmam lazım:) EditorFor'un EditorFor ile çalışmadığı anlaşılıyor (m => m.firstName, new {data_binding = m.DataBindingAttributes}). Özel bir görünüm şablonu ekledikten ve TextBoxFor kullandıktan sonra işe yaramış görünüyor. EditorFor ile yapmanın bir yolu var mı? –

+0

Aynı soru burada - EditorFor'dan TextBoxFor'a değiştirdim ve gayet iyi çalıştı, fakat ilk önce Crescent Fresh'den bahsetmişti ve sonra bu, EditorFor ile bu çalışmayı nasıl yapacağını takip etmeye çalışıyordu. –

cevap

27

Yukarıdaki Crescent Fish sayesinde, yalnızca altçizgi kullanabileceğiniz gibi görünüyor ve HTML nitelik isimlerinde alt çizgilere izin verilmediğinden MVC 3 bunları tire çizgilerine dönüştürecektir.

İlgili konular