更改默认控制器actionresult

时间:2010-01-08 13:09:42

标签: asp.net asp.net-mvc

默认情况下,ASP.NET MVC将ContentResult用于控制器方法,该方法返回未从actionresult类型继承的结果。这就是为什么如果我们将返回一些poco实体,它将只是它的类型名称。

我可以在控制器中重载某些内容,使其默认返回jsonresult。

示例:

//返回json产品表示而不是产品类型名称

public MyController: Controller
{
    public Product MyAction()
    {
          return new Product { Name = "Foo", ID = 1 };
     }
}

祝你好运, Alexey Z。

2 个答案:

答案 0 :(得分:3)

为什么不直接返回JSonResult?

public ActionResult MyAction()
{
    return Json( new Product { Name = "Foo", ID = 1 } );
}

答案 1 :(得分:1)

您可以使用如下属性来装饰您的控制器:

public class ReturnJsonAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var result = filterContext.ActionDescriptor.Execute(filterContext, filterContext.ActionParameters);
        filterContext.Result = new JsonResult {Data = result};
    }
}