Post方法可以从查询字符串中获取参数吗?

时间:2016-06-03 09:37:21

标签: asp.net-mvc asp.net-web-api asp.net-web-api2

我在看https://stackoverflow.com/a/15873977,但它对我没用。

如果我的Post方法有一个名为Message的参数(我自己的类的一个对象),并且我没有对它应用[FromBody]属性,是否可以传递参数{{1 ,json序列化和urlEncoded,在查询字符串而不是在Post体中?

我尝试传递Message(如果解码为?Message=%7B+%22Sender%22%3A...+%7D),但Message={ "Sender":... }参数在方法中仍然为空。

查询字符串键应该是Message,参数的名称,还是参数的类名或其他内容?

1 个答案:

答案 0 :(得分:2)

如果您有模特Foo:

public class Foo
{
    public string Bar { get; set; }
    public int Baz { get; set; }
}

并且您想要从查询字符串中绑定它,然后您必须解决各个属性:

?Bar=qux&Baz=42

并注释必须从查询字符串绑定模型:

public void Bar([FromUri]Foo foo)
{
}

如果您真的想将JSON发送到您的操作方法而不是模型,只需绑定到字符串而不是模型。然后,您可以使用操作方法中的JSON字符串执行任何操作。