2

在 ASP.Net Web API (RC) 中,我有一个测试模型类,如下所示:

[ModelBinder]
public class TestRequest
{
    public string Foo { get; set; }
    public string Bar { get; set; }
}

我的控制器如下所示:

public class TestController : ApiController
{
    public TestRequest Get(TestRequest model)
    {
        return model;
    }
}

现在,如果我通过以下方式调用操作:

http://.../test?foo=abc&bar=xyz

两个值都不绑定,因为模型绑定器需要模型前缀,因此我实际上需要调用:

http://.../test?model.foo=abc&model.bar=xyz

我可以理解这是为了让其他动作参数可以正确绑定,但在我的情况下,该模型是一种封装所有可能动作参数的干净方式,因此我不需要大量讨厌的动作方法签名的可选参数。它还允许简单的模型验证。

是否有任何简单的方法可以使模型绑定的行为与 MVC 或 POST 请求中的行为相同?

4

1 回答 1

0

从模型类中删除ModelBinder属性应该在您发布的示例中起作用。您会遇到更复杂的方法签名的问题,请参阅 Rick Strahl 的评论:http: //blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx #10302750

于 2012-06-08T06:46:20.327 回答