如何将表单数据发送到 API 控制器

2024-03-13

使用 jquery 发布表单数据:

$.ajax('API/Validate/Customer?column=1&rowid=2&vmnr=3&isik=4',
   {
       data: JSON.stringify({
           headerData: $("#_form").serializeArray()
       }),
       async: false,
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       type: "POST"
   });

它由 ASP.NET MVC4 Web API 控制器接收验证:

public class ValidateController : ApiController
{
    public class Body
    {
        public Dictionary<string, string> headerData { get; set; }
        public Dictionary<string, string> rowData { get; set; }
    }

    public HttpResponseMessage Validate(
        string id,
        string column,
        string rowid,
        int? vmnr,
        string isik,
        [FromBody] Body body,

        string dok = null,
        string culture = null,
        uint? company = null
       )
    { ...

控制器中的 body.headerData 值为 null。

根据回答在如何在Web API控制器Post方法中接收动态数据 https://stackoverflow.com/questions/33924458/how-to-receive-dynamic-data-in-web-api-controller-post-method

body.headerData 必须具有表单键。 然而,它是空的。

如何在控制器中获取 headerData 作为键、值对?

Chrome 开发者工具显示正文中发布了正确的 json:

{"headerData":[{"name":"Kalktoode","value":"kllöklö"},
               {"name":"Kaal","value":""}
              ]}

我尝试删除

 public Dictionary<string, string> rowData { get; set; }

下课但问题仍然存在。


您的控制器与您发送的内容不匹配

事实上,您的控制器将反序列化主体,如下所示:

{
  "headerData": {"someKey":"someValue", "otherKEy":"otherValue"},
  "rowData": {"someKey":"someKey"}
}

它是not您实际发送的 JSON 的结构。 你的控制器寻找一个有 2 名成员的主体beeing 词典, not 键值对数组.

如果您希望控制器使用键值对数组

通过键值数组,我的意思是:

{
  "headerData": [
    {
      "key": "string",
      "value": "string"
    }
  ],
  "rowData": [
    {
      "key": "string",
      "value": "string"
    }
  ]
}

您需要将 Body 对象更新为:

  [HttpPost, Route("test")]
  public void Test(Body b)
  {
  }

  public class Body
  {
      public List<KeyValuePair<string,string>> headerData { get; set; }
      public List<KeyValuePair<string,string>> rowData { get; set; }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将表单数据发送到 API 控制器 的相关文章

随机推荐

  • 嵌套砌体对象

    我正在尝试使用容器创建图形视图 因此 如果 A s gt B s gt C s 视图将显示 Bs 内的对象 c 而 Bs 又在 As 内 Something like this 我认为砌体视图非常适合此目的 但我无法使嵌套正常工作 到目前为
  • .NET Ionic.Zip:压缩或未压缩大小,或偏移量超过最大值

    我进行了以下设置 Win2008服务器 Ionic zip 参考模块 用于构建 zip 文件的单独驱动器 NET 4 0 Web 应用程序即时构建 zip 包 并允许客户端下载该包 该系统一直运行良好 直到现在 最近我们添加了一些较大的文件
  • git error“请告诉我你是谁。”和赫罗库

    我当时工作于branch master 并提交到 Git 存储库 一切都很好 我将新应用程序连接到 Heroku 上的这个存储库 我同时致力于 Heroku 和 Git 一切又恢复正常了 除了我无法在 Heroku 上运行 db migra
  • GAE - Python 3.7 - 如何登录?

    我有一个 python 3 7 中的谷歌应用程序引擎项目 我想在其中编写一些日志 我习惯在应用程序引擎 python 2 7 中编程 并且使用简单的代码 logging info hi there 将任何日志写入谷歌云日志控制台 上面的命令
  • 单击带有 codemirror 的按钮时如何撤消选定/突出显示的文本

    我有一个简单的 codemirror 文本编辑器 正在使用 bootstrap 进行工作 我可以单击粗体和代码按钮 确定 它会正确包装所选 突出显示的文本 问题一 当文本包含在标签中时 可以说 b something b 如果我再次选择 突
  • 将图像置于 css 圆的中心

    这是 CSS 圆圈中的图像 我希望圆圈围绕图像 因此图像应该位于中心 我怎样才能做到这一点 HTML div class circletag img src images no png div CSS div circletag displ
  • 为什么 C# 编译器不捕获 InvalidCastException [重复]

    这个问题在这里已经有答案了 可能的重复 编译时和运行时转换 C https stackoverflow com questions 4499528 compile time and runtime casting c sharp 据我了解
  • Branch.io 深层链接 URL 未从 Facebook 广告在应用程序中传递数据

    我们正在使用分支 io https branch io 将自定义数据传递给 App 为此 我们在分支仪表板中执行以下步骤 1 广告 gt 合作伙伴管理 gt Facebook gt 创建 Facebook 链接 2 在 Key Value
  • 为什么“for (i = 100; i <= 0; --i)”会永远循环?

    unsigned int i for i 100 i lt 0 i printf d n i 应该i gt 0如果你希望它从 100 循环到 0 则在循环的第二个条件中 正如其他人指出的那样 您需要更改对的定义i到一个有符号整数 只是int
  • 什么是 kCFErrorDomainCFNetwork 代码 = 303

    我尝试将文本字段数据发布到服务器 但是在发布时出现此错误 错误 错误域 kCFErrorDomainCFNetwork代码 303 操作无法完成 kCFErrorDomainCFNetwork 错误 303 UserInfo 0x13786
  • 如何在 ruby​​ 数组中找到整数/最大整数并返回索引位置?

    这就是我到目前为止所拥有的 ages 20 19 21 17 31 33 34 names Bob Bill Jill Aimee Joe Matt Chris 我如何获取年龄并对其应用一种方法以从中提取最大整数并了解其索引位置 原因是我想
  • 如何在Qt中使用M.S访问?

    我想在我的项目中使用access数据库 这是我的代码 include
  • 加载UTC数据后,Dygraph轴日期太长并且不会调整

    我正在向 Dygraph 提供一些不错的 unix 纪元数据 它显示的轴如下所示 经过一番摆弄后 我无法让它变得更简洁和动态调整 这是我的代码 var graph new Dygraph document getElementById pl
  • 跨平台方式获取一天中的时间?

    有没有一种简单的方法可以获取一天中的时间 17 30 01 20 等 并且适用于 iOS OSX Linux 和 Windows 如果没有的话 有 Windows 方式和 posix 方式之类的吗 Thanks 您可以通过以下方式检索时间t
  • 如何检查Sql Server的1433端口是否工作?

    如何检查Sql Server 1433端口是否开放 我已经设置了入站和出站规则 在 SQL 配置管理器中进行了检查 但不确定它是否有效 如果安装了 TELNET 您可以使用TELNET 1433验证端口连接 否则 下面的 PowerShel
  • 为什么我的 Azure、WCF、REST、SSL 项目无法运行?我究竟做错了什么?

    我试图在 Azure 下获取 SSL WCF 和 REST 但页面甚至无法加载 以下是我遵循的步骤 1 我将 www mydomain com CNAME 映射到我的 azuresite cloudapp net 2 我为 www mydo
  • 与分辨率无关的网站? (或者,“缩放整个网站以填充浏览器”)

    我正在开发一个真正受益于填充整个屏幕的项目 它本质上是一个 7000 像素长的页面 带有填充整个长度的巨大背景 可能被切成单独的部分 并在最终版本中以智能顺序方式加载 当您向下滚动时 有 5 或 6 个不同的片段 区域 幻灯片 基本上是 内
  • c# datagridview order rows?

    我有一个包含许多列的 datagridview 其中之一是日期时间列 我想显示从最近开始向下的行 例如 今天 昨天 前天等 是否可以使用 datagridview 来做到这一点 gridviews数据源是一个xml文档 非常感谢帮助 Reg
  • 使用全屏视图作为幻灯片的 WPF 幻灯片

    我已经被困在这个问题上有一段时间了 根本不知道如何继续 我需要使用全屏视图 用户控件 作为幻灯片来创建幻灯片 我的意思是我想通过滑动动画在全屏视图之间进行转换 基本思想是将一个视图放置在屏幕之外并放置在当前显示视图的一侧 然后简单地将它们滑
  • 如何将表单数据发送到 API 控制器

    使用 jquery 发布表单数据 ajax API Validate Customer column 1 rowid 2 vmnr 3 isik 4 data JSON stringify headerData form serialize