我有一个小应用程序,使用razor和@ html.textboxfor等典型帮助程序生成一些字段,现在,我需要使用knockoutjs,我创建了一个简单的viewmodel并将data-bind属性与每个帮助器放在一起,但是问题是该字段的值是干净的,我认为如果文本框被清理并且我需要使用这个值,那么对于敲除绑定值,我的代码是:
@Html.TextBoxFor(model => model.Name, new { @class = "form-control ancho_100", @data_bind = "value:name" })
var userViewModel = function () {
var self = this;
self.name = ko.observable();
}
var model = new userViewModel();
ko.applyBindings(model);
谢谢!
答案 0 :(得分:1)
这种情况正在发生,因为名称observable中没有值。通常你会将模型映射到json。首先,您将ViewModel更改为接受用于填充ViewModel的模型。
var UserViewModel = function (model) {
var self = this;
self.name = ko.observable(model.Name);
}
然后将asp.net模型序列化为json,然后将其传递给ViewModel的构造函数。我建议您声明以大写字母开头的模型,以便与包含ViewModel对象的变量区分开来。
var model = @Json.Encode(Model);
ko.applyBindings(new UserViewModel(model));