Używam Knockout-JS do wiązania właściwości w moim widoku z moim modelem widoku. Knockout-JS używa niestandardowego atrybutu o nazwie "powiązanie danych", który należy dołączyć do formantów, w których chcesz wiązać widok obiektów modelu.Atrybut niestandardowy z kreską w nazwie przy użyciu edytora EditorFor/TextBoxFor/TextBox helpery
przykład:
<input type='text' name='first-name' data-bind='value: firstName'/>
Wskazówki atrybut 'danych wiążą'.
Podczas renderowania widoku występują problemy z renderowaniem pola tekstowego z tym atrybutem. Jestem świadomy, że pomocnicy Html.EditorFor, Html.TextBoxFor i Html.TextBox biorą anonimowy obiekt, za pomocą którego można określić niestandardowe atrybuty. Jedynym problemem związanym z tą implementacją jest C#, który nie zezwala na myślniki jako nazwy zmiennych, więc to się nie skompiluje: @ Html.EditorFor (m => m.FirstName, new {data-bind = "value: firstName"}) ;
Jedyne co mogę myśleć jest to (w widoku model):
public class DataBindingInput
{
public string Value { get; set; }
public string DataBindingAttributes { get; set }
}
public class MyViewModel
{
...
public DataBindingValue firstName { get; set; }
....
}
i szablon widoku nazywany "DataBindingInput.cshtml":
@model DataBindingInput
<input type='text' data-binding='@Model.DataBindingAttributes' value='@Model.Value'>
Jedyny problem z tym czy tracę automatyczne generowanie nazwy wejściowej, więc nie będzie działać po odesłaniu, ponieważ segregator modelu nie ma pojęcia, jak ją powiązać.
Jak mogę to ułatwić?
Zobacz http://stackoverflow.com/questions/2520487/how-to-use-html-5-data-attributes-in-asp-net-mvc/4515095#4515095 –
Dzięki, mam to do pracy: Wygląda jak EditorFor nie działał z EditorFor (m => m.firstName, new {data_binding = m.DataBindingAttributes}). Po dodaniu niestandardowego szablonu widoku i użycia TextBoxFor, wydawało się, że działa. Czy jest jakiś sposób to zrobić z EditorFor? –
To samo pytanie tutaj - zmieniłem go z EditorFor na TextBoxFor i działało dobrze, ale to, co doprowadziło mnie najpierw do postu, o którym wspomniałem, Crescent Fresh, a następnie ten, próbował znaleźć sposób, w jaki można to zrobić za pomocą EditorFor. –