我正在努力学习如何使用淘汰赛,但还没有找到一个简单的例子来实现我想要实现的目标。我只是想将我的mvc Model类中的List绑定到我的viewModel中以进行敲除。例如,如果我有下面的模型。。这是一个类文件。
public class PropaneMaintModel
{
public List<PropaneMaintAssignment> PropaneMaint{get;set;}
public List<string> LocationIds { get; set; }
public int? SelectedLocation { get; set; }
}
public class PropaneMaintAssignment
{
public int StoreNumber { get; set; }
public int Tanks { get; set; }
[Required(ErrorMessage="Tank Size must have a value")]
[Range(0,10000,ErrorMessage="Tank Size must be between 0 and 10000.")]
public int TankSize { get; set; }
}
如何让列表"丙烷油漆"与敲除绑定一起工作?我需要像knockouts网站上的例子一样添加/从列表中删除。我的视图模型定义如下,但它不起作用。
function propaneMaintViewModel() {
var viewModel = this;
viewModel.PropaneMaint = ko.observableArray([]);
viewModel.addNew = function () {
viewModel.PropaneMaint.push(
{
StoreNumber: 0,
Tanks: 0,
TankSize: 0
}
);
}
}
ko.applyBindings(new propaneMaintViewModel());
Knockout没有直接绑定到任何c#模型。您可以做的是将MVC视图模型序列化为json对象,然后将其绑定
function bindModels(arr) {
var propaneMaintAssignments = new Array();
for (var i = 0; i < arr.length; i++)
propaneMaintAssignments.push(new PropaneMaintAssignment(arr[i]));
return propaneMaintAssignments;
}
function PropaneMaintAssignment(model) {
for(var property in model)
this[property] = model[property]; //bind all properties
}
var json = @Html.Raw(new JavaScriptSerializer().Serialize(Model.PropaneMaint)); //results in an array
var list = bindModel(json); //makes an array of named objects
viewModel.PropaneMaint(list); //adds that array of named objects to your observableArray