gpt4 book ai didi

c# - 将 Json actionresult 和 HttpStatusCodeResult 作为可能的结果,但只有一个返回

转载 作者:太空宇宙 更新时间:2023-11-03 18:22:04 24 4
gpt4 key购买 nike

出于各种原因,我喜欢只使用一个返回语句来设计我的方法(我认为这是最佳实践)。

但是我怎样才能让 mvc Controller actionresult 创建一个结果对象,我可以将 HttpStatusCodeResult 和普通的 Json 结果放入其中?

它们都继承自ActionResult。

编辑:我现在拥有的示例,但想更改为仅 1 个返回语句,如下所示:

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);
}
}

最佳答案

您可以继承和扩展添加 Http 状态代码的 JsonResult 类。

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);
}
}

现在您可以在非错误情况下像普通 Jsonresult 一样使用它,在错误情况下,它可以是:

var errorModel = new { error = "There was an error" };
return new JsonHttpStatusResult(errorModel, HttpStatusCode.InternalServerError);

关于c# - 将 Json actionresult 和 HttpStatusCodeResult 作为可能的结果,但只有一个返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com