0

我的 WebApi 控制器名为SrchController,具有下面列出的概念验证操作/方法。

我想通过操纵 url 来调用这个方法/动作(不知道叫什么)。用于测试目的。所以我的印象是这将使用模型绑定。

如果我输入浏览器地址,我期望在方法中设置标准的值[mysiteroot]/api/srch/TestResults?criteria.name = "hello"

[HttpGet]
public IEnumerable<ParcelResultItemViewModel> TestResults(SimpleViewModel criteria)
{
    //check value of criteria....it is always null. <-- i'm expecting name = "hello"
    //do stuff here
    return something;
} 

我的问题与这个问题密切相关How to handle optional query string parameters in Web API Darin 指出它应该按我的预期工作。有什么问题?

webapi 路由

 public static void Register(HttpConfiguration config)
        {

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }

            );    
        }

更新

我没有收到任何错误消息,传递给该方法的视图模型的值只是 null。

4

1 回答 1

1

SimpleViewModelurl 参数应以类的属性命名,criteria此处不需要。此外,查询字符串的构造方式不同——没有双引号和空格。

总而言之,这是 url 的样子:

[mysiteroot]/api/srch/TestResults?name=hello

或者,如果有多个参数:

[mysiteroot]/api/srch/TestResults?name=hello&address=someaddress

也就是说,再次假设它SimpleViewModel具有属性nameaddress(当然不是特定情况)。从服务器端看,一切正常,所以一旦您开始使用正确的 URL,一切都应该按预期工作。

于 2013-07-29T13:40:26.723 回答