如何在asp.net web api动作方法中传递json参数

时间:2016-04-03 07:47:03

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

我的asp.net web api是一个独立的应用程序,面对传递json sa参数的问题。我的api方法如下:

[Route("api/UniqueUser/{userInfo}")]
        public HttpResponseMessage GetUniqueUserByEmail(string userInfo)
{
}

在上面的参数 userInfo 是一个像bellow

这样的josn
{"UserInfo":[{"Id":1,"UserName":"Jxj Bdn","Email":"a@a.com"}]}

当我把它放在我的浏览器中时,网址显示错误

explicit wait

1 个答案:

答案 0 :(得分:1)

JSON数据应该放在要反序列化的请求体中,而不是查询字符串/浏览器URL中。

此外,'string userInfo'将无法正常工作。您可以定义一个表示JSON对象参数的类,它将正常工作。

这可行,例如:

public class UserInfo
{
    public int Id { get; set;}

    public string UserName  { get; set;}

    public string Email  { get; set;}
}

并更改此行:

public HttpResponseMessage GetUniqueUserByEmail(UserInfo userInfo)

编辑:

如果这是某人需要传递的网址,则使用路由:

https://site/api/UniqueUser/1/Jxj Bdn/a@a.com

在你的控制器中:

[Route("api/UniqueUser/{id}/{userName}/{email}")]
public HttpResponseMessage GetUniqueUserByEmail(int id, string userName, string email)

在这里看看如何使用传统的查询字符串参数执行此操作:

http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

我强烈建议使用第一种方法,它会为您提供一个强类型对象,如果细节发生变化则更容易处理,并且您可以获得模型验证中构建的好处。

您是否可以为客户制作简单的HTML表单?