Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api ASP.NETWebAPI-如何使从查询字符串绑定模型时不需要前缀?_Asp.net Web Api_Model Binding - Fatal编程技术网

Asp.net web api ASP.NETWebAPI-如何使从查询字符串绑定模型时不需要前缀?

Asp.net web api ASP.NETWebAPI-如何使从查询字符串绑定模型时不需要前缀?,asp.net-web-api,model-binding,Asp.net Web Api,Model Binding,在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

在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请求中的行为相同?

从模型类中删除
ModelBinder
属性应该在您发布的示例中起作用。对于更复杂的方法签名,您将遇到问题,请参阅Rick Strahl的评论:

从模型类中删除
ModelBinder
属性应该在您发布的示例中起作用。对于更复杂的方法签名,您将遇到一些问题,请参阅Rick Strahl的评论:

FromUri的
属性有什么不同吗?(根据)?
FromUri
属性有什么区别吗?(根据)?