lin*_*ann 2 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4
我是mvc的新手,我在一个控制器的方法中加载ViewBag,
HomeController: Controller
{
Public ActionResult Index()
{
loadViewBag();
return View();
}
public void loadViewBag()
{
ViewBag.aaa = "something";
}
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.
我的问题是,现在我想调用loadViewBag()方法形成另一个控制器(比如Account),这样我就可以重用同样的方法,并且由于一些静态变量需要使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";
...
}
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以在任何控制器中使用它
public class HomeController : Controller
{
public ActionResult Index()
{
this.LoadViewBag();
return View();
}
}
public class AccountController : Controller
{
public ActionResult Index()
{
this.LoadViewBag();
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
如果它只针对某些控制器,那么在例如中传递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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6293 次 |
| 最近记录: |