【发布时间】:2015-03-12 17:19:06
【问题描述】:
我尝试将 Knockout 模型发送到 Asp.net MVC,但我得到的只是空对象。 Fiddler 向我显示数据已正确发送。
// model
function ProductModel() {
var self = this;
self.Price = ko.observable();
self.Name = ko.observable("");
self.Description = ko.observable("");
self.Discount = ko.computed(function () {
return self.Price() - ((15 * self.Price()) / 100);
});
}
// viewmodel
function ProductVM() {
var self = this;
self.Product = new ProductModel();
self.Products = ko.observableArray();
self.AddPrd = function () {
self.Products.push(self.Product);
dt.row.add([
$("#ProductName").val(),
$("#Description").val(),
$("#Price").val(),
$("#discount").val()
]).draw();
self.Product = new ProductModel();
}
self.submit = function () {
var Data = JSON.stringify(ko.toJS(self.Products));
console.log(Data);
$.ajax({
url: "/Home/AddMultiProducts",
data: Data,
type: 'POST',
contentType: 'application/json',
dataType: 'json'
});
}
}
c#模型:
public class Product
{
public string Price { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public double Discount { get; set; }
}
c# 动作:
[HttpPost]
public ActionResult AddMultiProducts(Product prdlist)
{...}
浏览器console.log中显示的发送对象: [{"价格":"334","名称":"fdgdfg","描述":"fdgdfg","折扣":283.9}]
任何想法都会很棒!
【问题讨论】:
-
您的
console.log显示一个数组,但您的控制器操作需要单个Product... -
似乎有些不对劲。为什么 AddMultiProducts 方法只接受一种产品?它不应该接受产品数组/列表吗?
标签: c# asp.net asp.net-mvc json knockout.js