.net core2.2 webapi 无法获取ajax Post参数!

loveajax 2019-06-17 03:50:46
使用jq的 $.ajax() 来提交数据
经过测试 GET方法是成功的 不是跨域问题 get代码这里就不写出来了

但是POST提交表单到后台始终获取不到参数 MOD.Users 始终是NULL 试过后端参数前加[fromBody]
还有前端数据JSON序列化 都无效果

多次测试 发现 将 [ApiController] 修改 成 [Controller] 就能正常获取参数实例

我的问题是 :我不想将 [ApiController] 修改 成 [Controller] 如何修改其他代码才能获取到POST参数呢?


希望大神最好解释一下问题出在哪 原理是什么 多谢了! 分不多 请多帮忙

代码如下:



前端代码:
<form id="form1">
<div> 用户名:<input type="text" name="UserName" value="fox" /><br />
密码: <input type="text" name="UserPassWord" value="123456" /><br />
<input type="button" onclick="dpost()" value="POST" />
</div>
</form>
<script>
function dpost() {
$.ajax({
type: 'post',
url: 'http://localhost:5000/api/values',
data: $("#form1").serialize(),
dataType: 'text',
success: function (data) {console.log(data);}
});
}
</script>

后端代码:

[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpPost]
public string Post(MOD.Users us)
{
if (us.UserName == "fox")
{
return "yes";
}
return "no";
}
}
实体类:
namespace MOD
{
public class Users
{
public string UserName { get; set; }
public string UserPassWord { get; set; }
}
}
...全文
831 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
djk8888 2021-03-10
  • 打赏
  • 举报
回复
看这里:https://blog.csdn.net/djk8888/article/details/114631409
.net core2.2 webapi 获取ajax Post参数!
楠小南 2019-06-17
  • 打赏
  • 举报
回复
这问题好像是 2.1或以上才出现, 要显式指定 from 类型
摆明了 表单,JSON,查询字符串 只能选其一 MVC 则不限制
loveajax 2019-06-17
  • 打赏
  • 举报
回复
引用 14 楼 娃都会打酱油了 的回复:
 [HttpPost]
public string Post([FromForm]MOD.Users us)

说的那么明白还不会改啊……


我真是基础薄弱啊 要多学习了 多谢多谢!!
  • 打赏
  • 举报
回复
 [HttpPost]
public string Post([FromForm]MOD.Users us)
说的那么明白还不会改啊……
loveajax 2019-06-17
  • 打赏
  • 举报
回复
引用 12 楼 娃都会打酱油了 的回复:
apicontroller是为了适应restful风格


关键是 加了[apicontroller] 标记 如何获取到参数。。。

加上 [apicontroller] 标记 就报错
HTTP415: 不支持的媒体类型 - 服务器将拒绝为请求提供服务,因为受请求方法的受请求资源不支持请求实体采用的格式。
(XHR)POST - http://localhost:5000/api/values


改成[controller] 标记 就正常

  • 打赏
  • 举报
回复
apicontroller是为了适应restful风格
  • 打赏
  • 举报
回复
在core里面
FromBody对应的是application/json或xml这种格式
FromForm对应的www-for或者form-data这种格式

apiController这个貌似是2.1开始才有的
不加apicontroller的话,默认是FromForm,加了默认是FromBody
loveajax 2019-06-17
  • 打赏
  • 举报
回复
引用 7 楼 exception92 的回复:
配置方法里Usemvc了没有


Startup中:Configure 里有写
app.UseMvc();
正怒月神 版主 2019-06-17
  • 打赏
  • 举报
回复
引用 5 楼 loveajax 的回复:
[quote=引用 3 楼 正怒月神 的回复:] 问题是。。 core里,webapi和web项目好像都继承自Controller了。
[ApiController] 是创建项目时 框架自动添加的 我感觉它是有用处的 不然系统为什么不添加[Controller] 所以想搞清楚 [/quote] 那你按照6楼说法,修改一下datatype看看。 没怎么使用core。所以我也不能确定问题
loveajax 2019-06-17
  • 打赏
  • 举报
回复
引用 6 楼 刘才鬼 的回复:
dataType: 'text', 这个问题吗

肯定不是啊 这个是返回的数据类型 我后台返回的就是字符串
  • 打赏
  • 举报
回复
配置方法里Usemvc了没有
极客诗人 2019-06-17
  • 打赏
  • 举报
回复
dataType: 'text', 这个问题吗
loveajax 2019-06-17
  • 打赏
  • 举报
回复
引用 3 楼 正怒月神 的回复:
问题是。。
core里,webapi和web项目好像都继承自Controller了。


[ApiController] 是创建项目时 框架自动添加的 我感觉它是有用处的 不然系统为什么不添加[Controller]

所以想搞清楚
loveajax 2019-06-17
  • 打赏
  • 举报
回复
引用 1 楼 刘才鬼 的回复:
你这不是路由吗。。

我不太懂
刚接触.net core 做个WebApi的小练习
正怒月神 版主 2019-06-17
  • 打赏
  • 举报
回复
问题是。。 core里,webapi和web项目好像都继承自Controller了。
loveajax 2019-06-17
  • 打赏
  • 举报
回复
忘记补充了
错误提示:
HTTP415: 不支持的媒体类型 - 服务器将拒绝为请求提供服务,因为受请求方法的受请求资源不支持请求实体采用的格式。
(XHR)POST - http://localhost:5000/api/values
极客诗人 2019-06-17
  • 打赏
  • 举报
回复
你这不是路由吗。。

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧