我使用Knockout-JS来将我的视图中的属性绑定到我的视图模型。 Knockout-JS使用一个名为“data-bind”的自定义属性,您必须附加到要绑定到其中的控件来查看模型对象。
例:
<input type='text' name='first-name' data-bind='value: firstName'/>
注意’data-bind’属性。
在我的视图渲染中,我无法呈现具有此属性的文本框。我知道Html.EditorFor,Html.TextBoxFor和Html.TextBox帮助器都使用一个可以用来指定自定义属性的匿名对象。这个实现的唯一问题是C#不允许破折号作为变量名,所以这不会编译:
@ Html.EditorFor(m => m.FirstName,new {data-bind =“value:firstName”});
我唯一可以想到的是(在视图模型中):
public class DataBindingInput { public string Value { get; set; } public string DataBindingAttributes { get; set } } public class Myviewmodel { ... public DataBindingValue firstName { get; set; } .... }
和一个名为“DataBindingInput.cshtml”的视图模板:
@model DataBindingInput <input type='text' data-binding='@Model.DataBindingAttributes' value='@Model.Value'>
唯一的麻烦是我失去了自动生成的输入名称,因此它不会在后端工作,因为模型绑定器不知道如何绑定它。
我该怎么做这个工作?