Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何将包含另一个纯状态对象的纯状态对象发送到Web API控制器?_Asp.net Mvc_C# 4.0_Serialization_Asp.net Web Api_Jquery Datatables - Fatal编程技术网

Asp.net mvc 如何将包含另一个纯状态对象的纯状态对象发送到Web API控制器?

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 } 当我将“数据”设置为对象或

我试图将一个简单对象(AjaxSubmission)从表单发送到用于编辑表的Web API控制器

AjaxSubmission始终具有相同的字段。其中一个字段“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可能包含的每个数据类型创建一个不同的类,那么我可以获得所需的数据,但每个类都是重复的,而不是一行代码。这严重违反了干燥原则
我的问题是:如何在不重复自己的情况下发送AjaxSubmission?NET能够做到这一点吗

编辑: Fiddler说数据看起来像:

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]