【发布时间】:2013-09-19 01:27:31
【问题描述】:
基本上,我有一个 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" />
}
请求被路由到控制器,但由于某种原因,值始终为空。我尝试过使用和不使用 [FromBody] 属性。
我可以显然将 value 查询字符串参数附加到 URL,但我真的想弄清楚如何使用简单类型发布表单数据(而不是创建我自己的 DTO 类型)。
谢谢!
【问题讨论】:
-
当您在调试中运行并在
return Repository.Save(value)上停止时(Save也是无效的吗?),value的值是多少? -
Save 方法返回一个 int。 value 参数始终为 null。
-
你的代码编译了吗?因为当你的方法是 void 时,如果你想返回任何东西,你应该只返回一个 void
-
啊,抱歉,更新了代码 sn-p(为了清楚起见,我之前清理了它,不小心留下了 return 关键字)。 action 方法和 Save 方法实际上都返回整数,但无论哪种方式都不会影响 value 参数。 ://
-
我对 Ajax.BeginForm 了解不多,但是通过 Fiddler/Browser 的诊断,能否告诉我们请求正文中的内容是什么样的?是form-url编码格式还是json格式?
标签: asp.net asp.net-mvc asp.net-web-api