2016-02-16 4 views
1

Когда я нажимаю кнопку «Сохранить», ничего не происходит, и точка останова в контроллере SaveProducts не отвечает. Зачем? Я знаю, что нужно реализовать jsondeserealize, потому что продукт должен быть нулевым.asp.net post json to controller

HomeController.cs

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; } 
} 
+0

Принимается ответ выглядит хорошо, но просто совет на будущее; когда вы сталкиваетесь с такими проблемами, используйте инструменты браузера dev (F12) и смотрите вкладку и консоль сети. Если вы нажмете на свою кнопку и не увидите POST, вы точно знаете, что проблема - это ваш клиентский скрипт. –

ответ

2

Я не могу видеть в вашем коде, где вы активировали привязок и я думаю, в этом вы хотите активировать его, а не создавать наблюдаемые.

ko.observable(new ProductViewModel()); 

Вы должны изменить его на:

ko.applyBindings(new ProductViewModel());