我有一些ViewBag需要在调用它们时传递给每个视图 例如:
public ActionResult Index()
{
ViewBag.Importan1 = "A";
ViewBag.Importan2 = "B";
return View();
}
public ActionResult Detail()
{
ViewBag.Importan1 = "A";
ViewBag.Importan2 = "B";
return View();
}
我想:
public ActionResult Index()
{
return View();
}
public ActionResult Detail()
{
return View();
}
但ViewBag Important1和Important2被称为隐式。
答案 0 :(得分:0)
您可以为控制器编写一个超类,将Index和Detail定义为虚拟(以便能够覆盖它们并添加一些额外的功能),并在您的基类中设置Important1和Important2
public class MyController : Controller
{
public virtual ActionResult Index()
{
ViewBag.Importan1 = "A";
ViewBag.Importan2 = "B";
return View();
}
public virtual ActionResult Detail()
{
ViewBag.Importan1 = "A";
ViewBag.Importan2 = "B";
return View();
}
}
就是这样,你在所有控制器中都有你想要的行为的索引和细节,这些控制器是从示例中继承自MyController的
public class Controller1 : MyController
{
public override ActionResult Index()
{
var result = base.Index();
//do some manipulation here
return result;
}
}
你可以写这个控制器(我没有在我的电脑上查看)
public class MyController : Controller
{
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
//write your custom code here
}
}
然后从MyController继承您的控制器
使用filterActionAttribute并编写自己的文件管理器操作属性
答案 1 :(得分:0)
我建议你custom filter attribute
。你创建它(这里有一些很好的例子http://msdn.microsoft.com/en-us/library/dd381609(v=vs.100).aspx)并完成所有工作。然后,您只需在控制器上应用过滤器,它将影响您的所有操作方法。