我是 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/