【问题标题】:ASP.net MVC - RestSharp POST complex object is nullASP.net MVC - RestSharp POST 复杂对象为空
【发布时间】:2013-04-09 07:06:50
【问题描述】:

我正在使用 ASP.net MVC 4 WebAPI。我有另一个 ASP.net MVC 应用程序,它发布到 Controller 中的 Web API。但是,当我传递复杂对象时,复杂对象属性在 ASP.net MVC 4 Web API 中变为空。

WEB API 代码

public class User
{
    public string Name { get; set; }
    public Product Product { get; set; }
}

public class Product
{
    public int Age { get; set; }
}

public class ProductsController : ApiController
{
    [HttpPost]
    public string GetProdctPrice([FromBody]User user) // user object is null
    {
        return "hello";
    }
}

ASP.NET MVC 消费者代码

public class User
{
    public string Name { get; set; }
    public Product Product { get; set; }
}

public class Product
{
    public int Age { get; set; }
}

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var user = new User()
        {
            Name = "Headphone",
            Product = new Product() { Age = 33 }
        };

        var client = new RestClient();
        client.BaseUrl = "http://localhost:56013/api/";

        var request = new RestRequest();
        request.Method = Method.POST;
        request.Resource = "/Products/GetProdctPrice";
        request.AddObject(user);

        IRestResponse response = client.Execute(request);

        ViewBag.Message = response.Content;

        return View();
    }
}

【问题讨论】:

  • 您确定,您的请求包含产品和用户详细信息。使用提琴手并检查您的请求正文
  • 如果你不使用类似的东西:request.AddParameter("User",user)

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


【解决方案1】:

将您的 GetProdctPrice 重命名为 PostProdctPrice。

public class ProductsController : ApiController
    {


       // [System.Web.Mvc.HttpPost]
        public string PostProdctPrice(User user) 
        {
            return "hello";
        }
    }

在 WebAPI 中(当您从 APiController 继承控制器时)您不需要在方法之上添加 [HttpPost] 或 [HttpGet] 属性。任何以 Get 开头的方法都会自动映射到 HTTP GET 方法,任何以 Post 开头的方法都会自动映射到 HTTP POST 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    相关资源
    最近更新 更多