gpt4 book ai didi

asp.net - 使用 BeginForm 将表单数据发送到 ASP.NET MVC API Controller

转载 作者:行者123 更新时间:2023-12-03 01:35:22 25 4
gpt4 key购买 nike

基本上,我有一个具有以下方法的 API Controller :

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" />
}

请求被路由到 Controller ,但由于某种原因始终为空。我尝试过使用和不使用 [FromBody] 属性。

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

谢谢!

最佳答案

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

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

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

=值

而不是这样:

值=foo

因此,如果您像这样发布数据 $.post('/api/myapicontroller', { "": $('#myinput').val() }); 它应该工作得很好,如果您想发送简单类型的数组,只需发送这样的数据 $.post('/api/myapicontroller', { "": ["update one", "update Two", “更新三”] });

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

关于asp.net - 使用 BeginForm 将表单数据发送到 ASP.NET MVC API Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18876694/

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