gpt4 book ai didi

asp.net-mvc - Controller 静态方法中的ViewBag

转载 作者:行者123 更新时间:2023-12-02 05:28:27 25 4
gpt4 key购买 nike

我是 mvc 的新手,我在 Controller 方法中加载 ViewBag,

HomeController: Controller
{
Public ActionResult Index()
{
loadViewBag();
return View();
}

public void loadViewBag()
{
ViewBag.aaa = "something";
}
}

它工作正常。

我的问题是,现在我想从另一个 Controller (比如帐户)调用 loadViewBag() 方法,这样我就可以重用相同的方法,并且由于一些静态变量需要使 loadViewBag() 方法静态化,例如:public static void loadViewBag()如果我将 loadViewBag 方法设为静态,ViewBag 上会出现错误“非静态字段、方法或属性‘System.Web.Mvc.ControllerBase.ViewBag.get’需要对象引用” .

有什么解决方案/建议吗

谢谢。

最佳答案

只需将其作为 ControllerBase 的扩展方法,例如

public static void ControllerExt
{
public static void LoadViewBag(this ControllerBase controller)
{
controller.ViewBag.aaa = "something";
...
}
}

这样你就可以在任何 Controller 中使用它了

public class HomeController : Controller
{
public ActionResult Index()
{
this.LoadViewBag();
return View();
}
}

public class AccountController : Controller
{
public ActionResult Index()
{
this.LoadViewBag();
return View();
}
}

如果它只特定于一些 Controller ,那么传递 ViewBag 属性会更灵活,例如

public static class ControllerHelper
{
public static void LoadViewBag(dynamic viewBag)
{
viewBag.aaa = "something";
}
}

public class HomeController : Controller
{
public ActionResult Index()
{
ControllerHelper.LoadViewBag(ViewBag);
return View();
}
}

关于asp.net-mvc - Controller 静态方法中的ViewBag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18783357/

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