【发布时间】:2016-05-28 11:00:55
【问题描述】:
当我单击“保存”按钮时,没有任何反应,并且 SaveProducts 控制器中的断点没有响应。为什么?我知道它需要实现 jsondeseralize 因为 product 应该为 null。
HomeController.cs
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
public ActionResult SaveProducts(ProductModel product)
{
return View("Index");
}
}
索引.cshtml
@{
ViewBag.Title = "Index";
}
<script src="~/Scripts/knockout-2.2.0.js"></script>
<h2>Index</h2>
<div data-bind="with: currentProduct">
<p>Name: <input type="text" data-bind="value: productName" /></p>
</div>
<input type="button" value="Save" data-bind="click: saveProduct" />
<script>
function ProductViewModel() {
var self = this;
self.currentProduct = ko.observable(new Product("P1"));
self.saveProduct = function () {
var productModel = ko.toJS(self.currentProduct);
ko.utils.postJson("/Home/SaveProducts", {product: productModel} );
}
}
function Product(name) {
var self = this;
self.productName = ko.observable(name);
}
ko.observable(new ProductViewModel());
</script>
ProductModel.cs
public class ProductModel
{
public string productName { get; set; }
}
【问题讨论】:
-
接受的答案看起来不错,但只是对未来的提示;当您遇到此类问题时,请使用浏览器开发工具 (F12) 并查看网络选项卡和控制台。如果您单击按钮并没有看到 POST 发生,那么您肯定知道问题出在您的客户端脚本上。
标签: javascript c# json asp.net-mvc knockout.js