2

我正在使用 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();
    }
}
4

1 回答 1

0

将您的 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 方法。

于 2013-05-11T11:17:44.037 回答