gpt4 book ai didi

c# - 在 ASP .NET MVC 中的 Controller 之间共享数据的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 15:01:27 25 4
gpt4 key购买 nike

我有两个 Controller :

public class AController : Controller
{
public ActionResult AControllerAction()
{
if (// BControllerAction reported an error somehow )
{
ModelState.AddModelError("error-key", "error-value");
}
...
}
}

public class BController : Controller
{
public ActionResult BControllerAction()
{
try{Something();}
catch(SomethingExceprion)
{
// here I need to add error info data,
// pass it to AController and redirect to
// AControllerAction where this error will be added
// to model state
}
}
}

我想我可以这样做:

public ActionResult BControllerAction()
{
try{Something();}
catch(SomethingException)
{
var controller = new AController();
controller.ModelState.AddModelError("error-key", "error-value");
controller.AControllerAction();
}
}

但我建议这将是一种破坏架构的方法,我不想那样做。除了传递模型对象之外,还有更简单、更安全的方法吗?

最佳答案

根据您需要传回 Controller A 的异常细节,我会按照以下方式做一些事情

public ActionResult BControllerAction()
{
try{Something();}
catch(SomethingException ex)
{
return RedirectToAction("AControllerAction", "AController", new { errorMessage = ex.Message() })
}
}

然后把被调用方法的签名改成

public ActionResult AControllerAction(string errorMessage)
{
if (!String.IsNullOrEmpty(errorMessage))
{
//do something with the message
}
...
}

关于c# - 在 ASP .NET MVC 中的 Controller 之间共享数据的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199379/

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