Asp.net mvc 如何将包含另一个纯状态对象的纯状态对象发送到Web API控制器?
我试图将一个简单对象(AjaxSubmission)从表单发送到用于编辑表的Web API控制器 AjaxSubmission始终具有相同的字段。其中一个字段“data”指的是另一个简单对象,该对象具有特定表的访问器(下面的员工或供应商示例) 我的控制器获取的数据如下所示:Asp.net mvc 如何将包含另一个纯状态对象的纯状态对象发送到Web API控制器?,asp.net-mvc,c#-4.0,serialization,asp.net-web-api,jquery-datatables,Asp.net Mvc,C# 4.0,Serialization,Asp.net Web Api,Jquery Datatables,我试图将一个简单对象(AjaxSubmission)从表单发送到用于编辑表的Web API控制器 AjaxSubmission始终具有相同的字段。其中一个字段“data”指的是另一个简单对象,该对象具有特定表的访问器(下面的员工或供应商示例) 我的控制器获取的数据如下所示: public EditorServerResponse Put(AjaxSubmission ajaxSubmission = null) { // Handle the data } 当我将“数据”设置为对象或
public EditorServerResponse Put(AjaxSubmission ajaxSubmission = null) {
// Handle the data
}
- 当我将“数据”设置为对象或动态时,它显示为空对象。我不能把它“当作”给员工或供应商,因为它不存储任何东西
- 我怀疑这是序列化程序的一个限制。MVC4使用JSON.NET表示JSON,但数据以“内容类型:application/x-www-form-urlencoded;charset=UTF-8”的形式发送
- 我不能轻易改变数据的发送方式,因为Datatables编辑器插件就是这样做的。我认为这是发送数据的合理方式,也是.NET能够处理的合理问题
- 如果我为AjaxSubmission可能包含的每个数据类型创建一个不同的类,那么我可以获得所需的数据,但每个类都是重复的,而不是一行代码。这严重违反了干燥原则
action edit
table
id row_4
data[amu] 49
data[chemicalFormula] BF2
data[commonName] Boron difluoride
data[status] Y
data[notes]
原始数据是:
操作=编辑&表格=&id=行4&数据%5Bamu%5D=49&数据%5B化学公式%5D=BF2&数据%5BComonName%5D=硼+二氟&数据%5B状态%5D=Y&数据%5B注释%5D=
(这与我的简化示例不同,但类似)如果您的POST请求是以application/x-www-form-urlencoded形式发出的,则
FormUrlEncodedMediaTypeFormatter
应成功绑定操作参数。你能检查一下fiddler带来的消息正文吗?@tugberk:当然,我已经把结果添加到问题中了。
action edit
table
id row_4
data[amu] 49
data[chemicalFormula] BF2
data[commonName] Boron difluoride
data[status] Y
data[notes]