gpt4 book ai didi

asp.net-web-api - FormUrlEncodedMediaTypeFormatter 与 JQueryMvcFormUrlEncodedFormatter

转载 作者:行者123 更新时间:2023-12-02 04:09:16 25 4
gpt4 key购买 nike

我已经创建了一个默认的 Web API 项目,至少加载了这 2 个媒体格式化程序。两者都适用于相同的内容类型:

FormUrlEncodedMediaTypeFormatter: application/x-www-form-urlencoded
JQueryMvcFormUrlEncodedFormatter: application/x-www-form-urlencoded

当我使用 enctype="application/x-www-form-urlencoded" 制作一个简单的 http post 表单时,它仅适用于 JQueryMvcFormUrlEncodedFormatter,这意味着我发送了复杂对象在服务器端不为空。

当我在应用程序启动时删除格式化程序JQueryMvcFormUrlEncodedFormatter并再次执行简单的http post表单时,我希望它能够再次工作,但事实并非如此。

我收到一个异常,没有加载适当的格式化程序。

事实并非如此-

为什么不起作用?

附注

我发现这就是区别:

– System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter, for handling HTML form URL-encoded data
– System.Web.Http.ModelBinding.JQueryMvcFormUrlEncodedFormatter, for handling model-bound HTML form URL-encoded data

但我不明白其中的区别!

我什至不使用 jquery 来发布我的表单:

<form role="form" method="post" action="api/values"    enctype="application/x-www-form-urlencoded">
<input type="text" class="form-control" name="firstName" placeholder="Enter first name">
<input type="text" class="form-control" name="lastName" placeholder="Enter last name">
<button type="submit" class="btn btn-default">Submit</button>
</form>

最佳答案

FormUrlEncodedMediaTypeFormatterapplication/x-www-form-urlencoded 正文绑定(bind)到 FormDataCollection 类型,并且仅绑定(bind)该类型。

JQueryMvcFormUrlEncodedFormatter 但是,使用可用的 ModelBinder 首先将正文解析为 FormDataCollection,然后使用第一个兼容的 ModelBinder 将其解析为最终模型。这就像混合模型绑定(bind)方法和媒体类型格式化方法,据我所知,WebAPI 文档中没有对此进行解释。

默认情况下会注册这两个格式化程序。这是我通过阅读WebAPI源代码推断出来的。

关于asp.net-web-api - FormUrlEncodedMediaTypeFormatter 与 JQueryMvcFormUrlEncodedFormatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com