我正在使用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 {=>-m.FirstName= "value: firstName“});
我唯一能想到的就是这个(在view-model中):
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'>
唯一的问题是我失去了输入名称的自动生成,所以它不能在回发上工作,因为模型绑定器不知道如何绑定它。
我怎么才能让它工作呢?
发布于 2011-06-30 23:26:20
多亏了上面的新月鱼,看起来你可以只使用下划线,MVC3会将它们转换为短划线,因为在HTML属性名称中不允许下划线。
https://stackoverflow.com/questions/6525838
复制相似问题