在MVC3中使用自定义JSON(POST)绑定重载Controller方法

时间:2011-03-24 20:22:49

标签: c# asp.net-mvc json asp.net-mvc-3

在尝试使用MVC 3的一些很酷的新功能时,我遇到了路障。

是否可以使用MVC3使用自定义JSON绑定重载控制器?

它看起来不像现在自动工作.... 最好的方法是什么? 例如 如果我想实现以下端点

[HttpPost]
public ActionResult GetPet(Cat catObject)
{
return Json(catObject.purr());
}

超载此端点

[HttpPost]
public ActionResult GetPet(Dog dogObject)
{
return Json(dog.bark());
}

如果不使用第三方库或System.Web.Script.Serialization.JavaScriptSerializer

,我有什么方法可以做到这一点

还有什么特别的原因,这还没有在mvc3中实现吗?

1 个答案:

答案 0 :(得分:0)

在控制器上重载Json对象似乎是一个遥远的可能性,而不是现在的现实。 这是我最接近的重载动作

[HttpPost]
public ActionResult GetPet()
{
Cat catObj;
Dog dogObg;
if (TryUpdateModel(catObj))
        return Json(catObj.purr());
else
{
    ModelState.Clear();
    if (TryUpdateModel(dogObg))
        return Json(dogObj.bark());
    else
    {
        ModelState.Clear();
        ModelState.AddModelError("InvalidInput", "The given input does not match with any of the accepted JSON types");
        return new HttpBadRequestResult(ModelState);
    }
}

}