如何在ASP.NET WebAPI RC中绑定一个简单的POST值?

时间:2012-06-14 12:26:21

标签: asp.net-web-api

我的一个API控制器上有一个POST方法,它接受一个字符串值:

public string Post([FromBody] string foo) {
    return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}

我正在使用帖子请求的正文发布到:

foo=123412341234

(即,您可以通过提交浏览器表单以及使用HTTP客户端来启动常规HTTP POST)

在WebAPI的候选版本中,它已经默默地停止工作 - 它只是不再绑定foo。为了使代码正常工作,我必须用这个代替方法:

public string Post(FormDataCollection form) {
    var foo = form.Get("foo");
    return(fooOracle.ValidateFoo(foo) ? "success" : "failure");
}

这个有效,但它有点混乱,涉及比以前版本更多的管道测试。

我是否遗漏了一些微妙的变化,或者是否已弃用[FromBody]绑定语法而支持这种相当冗长的绑定语法?该属性仍然存在,但它真的不清楚它在RC版本中的实际作用。

1 个答案:

答案 0 :(得分:1)

实际上有一个微妙的变化,它无法处理像'foo = 123412341234'这样的输入,但会处理'= 123412341234'作为输入。你可以让客户端发送它吗?

如果没有,你可以创建一个如下所示的包装类,并使你的行为期望stringwrapper作为参数而不是String本身。

Class StringWrapper {public string Foo {get;设置;}}