【问题标题】:Can a Post method take parameters from the Query String?Post 方法可以从查询字符串中获取参数吗?
【发布时间】:2016-06-03 09:37:21
【问题描述】:

我正在查看https://stackoverflow.com/a/15873977,但它对我不起作用。

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

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

查询字符串key应该是Message、参数名还是参数的类名还是别的什么?

【问题讨论】:

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


    【解决方案1】:

    如果你有一个模型 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 字符串做任何您想做的事情。

    【讨论】:

    • 这是否意味着我必须在[FromUri][FromBody] 之间做出选择,并且不能为调用者提供两者的灵活性?
    • 为什么要提供这样的灵活性?请注意,您将支付可维护性。无论如何yeah, you can.
    猜你喜欢
    • 2017-12-09
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 2020-02-20
    • 2016-09-22
    • 2011-09-10
    • 1970-01-01
    • 2013-05-16
    相关资源
    最近更新 更多