Dje*_*sen 1 c# asp.net asp.net-mvc
由于多种原因,我喜欢仅使用一个return语句来设计我的方法(我认为这是最佳实践)。
但是,如何让MVC控制器actionresult创建结果对象,在其中我既可以将HttpStatusCodeResult放入其中,也可以将普通的Json结果放入其中?
它们都继承自ActionResult。
编辑: 我现在拥有的示例,但是想更改为仅1个return语句,就像这样:
public ActionResult Test(string inputString = "stack")
{
try
{
int carrots = int.Parse(inputString);
return Json(new { Data = carrots }, JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
return new HttpStatusCodeResult(400);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以继承并扩展JsonResult类,该类添加了Http状态代码。
public class JsonHttpStatusResult : JsonResult
{
private readonly HttpStatusCode _httpStatus;
public JsonHttpStatusResult(object data, HttpStatusCode httpStatus)
{
Data = data;
_httpStatus = httpStatus;
}
public override void ExecuteResult(ControllerContext context)
{
context.RequestContext.HttpContext.Response.StatusCode = (int)_httpStatus;
base.ExecuteResult(context);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在非错误情况下像正常的Jsonresult一样使用它,在错误情况下,它可以是:
var errorModel = new { error = "There was an error" };
return new JsonHttpStatusResult(errorModel, HttpStatusCode.InternalServerError);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1312 次 |
| 最近记录: |