【发布时间】:2012-05-24 19:43:18
【问题描述】:
是否可以将模型中的数据绑定到淘汰视图模型。举个例子:
public ActionResult Edit(int id)
{
Product product = _db.Products.FirstOrDefault(x=>x.ItemId == id);
return View(product);
}
然后在视图中,我通常会这样做:
@model myApp.Models.Product
@using(Html.BeginForm())
{
@Html.EditorFor(x=>x.ItemName)
@Html.ValidationMessageFor(x=>x.ItemName)
<input type="submit" value="Update" />
}
但如果使用 Knockout,我会创建一个 EditProductViewModel,我会在其中执行以下操作:
var EditProductViewModel = {
ItemName = ko.observable('')
};
EditProductViewModel.Edit = function() {
$.ajax({
url: "Home/Edit",
data: ko.ToJson(this),
success: function() {
// do something
}
});
};
$(function() {
ko.applyBindings(EditProductViewModel);
});
在我看来,我会做类似的事情,而不是使用 Html Helpers:
<form data-bind="submit: Edit">
<input type="text" data-bind="value: ItemName" />
<input type="submit" value="Update" />
</form>
那么如何使用从控制器返回的数据来填充它?
【问题讨论】: