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

使用BeginForm将表单数据发布到ASP.NET MVC API控制器,第1张

概述基本上,我有一个API控制器,具有以下方法: public void Post([FromBody] string value){ Repository.Save(value);} 我像这样构建我的表单: @using (Ajax.BeginForm(new AjaxOptions { HttpMethod = "Post", Url = "/api/MyController"})){ @H_301_4@ 基本上,我有一个API控制器,具有以下方法:

public voID Post([FromBody] string value){   Repository.Save(value);}

我像这样构建我的表单:

@using (AJAX.BeginForm(new AJAXOptions { httpMethod = "Post",Url = "/API/MyController"})){   <input type="text" name="value" value="" />   <input type="submit" value="Post" />}

请求被路由到控制器,但由于某种原因,该值始终为null.我已尝试使用和不使用[FromBody]属性.

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

谢谢!

@H_301_4@解决方法 默认情况下,Web API尝试从请求URI中获取简单类型. FromBody属性告诉Web API从请求主体读取值.

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

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

=价值

而不是这样的:

值= FOO

所以,如果你发布你的数据,如$.post(‘/ API / myAPIcontroller’,{“”:$(‘#myinput’).val()});它应该工作得很好,如果你想发送一个简单类型的数组,只需发送这样的数据$.post(‘/ API / myAPIcontroller’,{“”:[“更新一个”,“更新两个”,“更新三个“]});

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

@H_301_4@ @H_301_4@ @H_301_4@ @H_301_4@ 总结

以上是内存溢出为你收集整理的使用BeginForm将表单数据发布到ASP.NET MVC API控制器全部内容,希望文章能够帮你解决使用BeginForm将表单数据发布到ASP.NET MVC API控制器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/web/1055012.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存