首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用BeginForm将表单数据发布到ASP.NET MVC API控制器

使用BeginForm将表单数据发布到ASP.NET MVC API控制器
EN

Stack Overflow用户
提问于 2013-09-18 15:42:44
回答 1查看 2.8K关注 0票数 6

基本上,我有一个API控制器,其方法如下:

代码语言:javascript
运行
复制
public void Post([FromBody] string value)
{
   Repository.Save(value);
}

我的表格是这样构造的:

代码语言:javascript
运行
复制
@using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", Url = "/api/MyController"}))
{
   <input type="text" name="value" value="" />
   <input type="submit" value="Post" />
}

请求被路由到控制器,但由于某种原因,总是为空。我尝试过使用和不使用FromBody属性。

显然,我可以将查询字符串参数添加到URL中,但我真的想弄清楚如何用简单的类型发布表单数据(而不是创建自己的DTO类型)。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-18 17:15:04

默认情况下,Web尝试从请求URI获取简单类型。FromBody属性告诉Web从请求体读取值。

Web最多只读取一次响应体,因此只有一个操作参数可以来自请求体。如果需要从请求体获取多个值,请定义一个复杂类型。

其次,客户端需要发送以下格式的值:

=值

不是这样的:

value=foo

因此,如果您像这样发布数据,它应该工作得很好,如果您想发送一个简单类型的数组,只需发送类似于这个$.post('/api/myapicontroller', { "": $('#myinput').val() });的数据。

如果使用Fiddler,只需将=John+Smith添加到请求正文中,并确保具有如下所示的正确的内容类型:Content-Type: application/x-www-form-urlencoded

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18876694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档