我正在使用JSON数据向控制器操作发出POST
Ajax请求,如下所示:
$.ajax({
type: "POST",
url: "/AssembleProducts/UpdateProduct",
data: JSON.stringify({ Product: Product }),
contentType: "application/json; charset=utf-8",
dataType: 'json'
});
动作方法如下所示:
[HttpPost]
public void UpdateProduct(Product Product)
{
}
我可以接受JSON数据为Product
,但我希望能够将其作为匿名对象接受。所以,我不需要Type
来接受数据。我尝试使用dynamic
和object
关键字作为参数类型而不是Product
,但即使在线查找相关主题,仍然不成功。
请就此情况提出建议。
答案 0 :(得分:1)
这样的事情怎么样:
客户方:
data: { product: JSON.stringify(Product) }
服务器端:
string productJson = HttpContext.Current.Request.Form["product"];
Product p = new JavaScriptSerializer().Deserialize<Product>(productJson);
答案 1 :(得分:1)
我很清楚:我正在阅读如下:你有一个模特产品:
class Product
{
public int ProductId { get; set; }
public string ProductName { get; set; }
// etc
}
您想要使用附加元数据发布产品:
var productJsonObject = {
ProductId: 1,
ProductName: 'widget',
MetaField: 'xyz'
}
如果是这种情况,要在您的操作中获取MetaField,您可以尝试直接查询价值提供者:
[HttpPost]
public void UpdateProduct(Product Product)
{
var metaField = ControllerContext.Controller.ValueProvider.GetValue("MetaField");
}