Asp.net 更改默认控制器操作结果
默认情况下,ASP.NET MVC使用ContentResult作为控制器方法,该方法返回的结果不是从actionresult类型继承的。这就是为什么如果我们返回某个poco实体,它将只是它的类型名 我是否可以在控制器中重载一些内容,使其在默认情况下返回jsonresult 例如: //返回json产品表示,而不是产品typenameAsp.net 更改默认控制器操作结果,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,默认情况下,ASP.NET MVC使用ContentResult作为控制器方法,该方法返回的结果不是从actionresult类型继承的。这就是为什么如果我们返回某个poco实体,它将只是它的类型名 我是否可以在控制器中重载一些内容,使其在默认情况下返回jsonresult 例如: //返回json产品表示,而不是产品typename public MyController: Controller { public Product MyAction() { r
public MyController: Controller
{
public Product MyAction()
{
return new Product { Name = "Foo", ID = 1 };
}
}
致以最良好的祝愿,
Alexey Z.为什么不直接返回JSonResult
public ActionResult MyAction()
{
return Json( new Product { Name = "Foo", ID = 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};
}
}
我想要避免ActionResult作为返回参数。我希望将我的方法声明为:public Product MyAction()在MVC中是否可行?您可以尝试重写project类上的ToString(),以便它返回格式为JSON的对象,但是,您可能每次都必须在方法中手动更改响应的ContentType,否则它将使用默认值——显然不是
application/json
。为什么您如此热衷于让方法返回产品
,而不是操作结果
?为单元测试解包JSON结果并不难。