gpt4 book ai didi

javascript - ko.toJSON() 在 MVC 中工作,但在 asp.net FORM 应用程序 "{item:"+ ko.toJSON(Product) + "}"中工作

转载 作者:行者123 更新时间:2023-12-02 18:23:37 24 4
gpt4 key购买 nike

我是knockout js的新手,我想将knockout.js与asp.net表单应用程序一起使用。我想使用 ajax 调用更新实体,如下所示

// Update product details
self.update = function () {
var Product = self.Product();

$.ajax({
url: 'SProduct.aspx/Update',
cache: false,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: ko.toJSON(Product),
success: function (data) {
alert("success");
self.Products.removeAll();
self.Products(data); //Put the response in ObservableArray
self.Product(null);
alert("Record Updated Successfully");
},
error: function (data) {
console.log(data);
}
})

}

它不起作用,但如果我改变

 data: ko.toJSON(Product), 

进入

data:"{item:" + ko.toJSON(Product) + "}",

开始调用Web方法。

这是我的网络方法

 [WebMethod]
public static bool Update(Product item)
{
Product p = new Product();
return true;
}

我还想提一下 ko.toJSON() 在 asp.net mvc 应用程序中工作。

最佳答案

这只是 Web 表单和 MVC 中的不同机制。在 Asp.NET Web 表单中,由于页面方法“Update”具有参数“item”,因此它需要一个具有“item”属性的 JSON 对象,因此必须以 {"item":complexObj} 形式构造 json 对象。对于 ASP.NET MVC 也是如此,但除此之外,“data: ko.toJSON(Product)”也正在工作,因为有一个“值提供者”工厂,它使用操作方法签名来确定我们期望的类型,并且它尝试将其收到的输入(来自 POST)转换为该类型。这一切都发生在 MVC 的绑定(bind)逻辑内部。

关于javascript - ko.toJSON() 在 MVC 中工作,但在 asp.net FORM 应用程序 "{item:"+ ko.toJSON(Product) + "}"中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18593177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com