0

我目前有一个带有 1 个属性的标准课程

public class RangeProperties
{
    public string ItemNumber { get; set; }
}

这作为参数输入到控制器中,就像这样

    public Task<HttpResponseMessage> GetItems(RangeProperties rangeProperties)

我在控制器中设置了一个断点,所以我可以看到它进入但 rangeProperties 始终为空。

我这样称呼控制器

   http://localhost:8383/api/GetItems?ItemNumber=test

我尝试将 ItemNumber 更新为 int 和 int?依然没有。我也尝试过不同的案例。

我本来希望 rangeProperties 不会为空。

我希望有 rangeProperties 来保存许多属性,然后这些属性将从查询字符串中填充,如果我没有向下发送一些东西,那么里面的属性将为空。

但目前它甚至没有使用 1 个属性。

有人知道我在做什么错吗?

虽然我正在使用 asp.net web api,但我相信这也类似于 asp.net mvc。

值得注意的一件事是,如果我用 (string itemNumber) 替换控制器,它就可以工作。但对于复杂类型,它不会自动填充。

谢谢

4

1 回答 1

3

尝试这个 :

public Task<HttpResponseMessage> GetItems([FromUri]RangeProperties rangeProperties)

默认情况下,Web Api 在请求的查询字符串中读取简单类型,在请求正文中读取复杂类型。在您的情况下,您尝试在查询字符串中传递复杂类型的值,因此您必须强制 web apiRangeProperties使用FromUriAttribute.

相反的属性是FromBodyAttribute,如果您在发布请求的正文中有一个 int 或 string 值。

于 2013-10-22T16:27:49.643 回答