asp.net-mvc C 在Controller操作方法中重用代码的最佳方法
所以我在我的控制器类的末尾创建了一个私
我在相同的控制器类中有一些看起来几乎相同的代码,例如设置viewbags来填充所有下拉列表,相同的代码适用于我的Post并获得Create和Edit操作方法.
我在我的action方法中调用了这个方法.那么重用代码的正确方法是什么? 第一种方法 C 覆盖控制器类的OnActionExecuting和/或OnActionExecuted方法: public class HomeController: Controller { protected override void OnActionExecuting(ActionExecutingContext filterContext) { string controllerName = RouteData.Values["controller"].ToString(); ViewBag.ControllerName = controllerName; } protected override void OnActionExecuted(ActionExecutedContext filterContext) { string controllerName = RouteData.Values["controller"].ToString(); ViewBag.ControllerName = controllerName; } }您还可以创建实现这些方法的抽象基本控制器,然后从抽象控制器继承具体的控制器,这样就不会在每个控制器中复制代码. 第二种方法 C 制作自定义ActionFilter属性并装饰需要执行其他操作的每个控制器. public class MyActionFilterAttribute: ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { string controllerName = filterContext.RouteData.Values["controller"].ToString(); filterContext.Controller.ViewBag.ControllerName = controllerName; } public override void OnActionExecuted(ActionExecutedContext filterContext) { string controllerName = filterContext.RouteData.Values["controller"].ToString(); filterContext.Controller.ViewBag.ControllerName = controllerName; } }然后装饰控制器,如: [MyActionFilter] public class HomeController: Controller { // .... }更新:过滤器方法的额外灵活性,如果您需要基于每个操作进行过滤,而不是控制器中的所有操作,它也可能: public class HomeController: Controller { [MyActionFilter] public ActionResult MyAction() { //... } }(编辑:岳阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 哪个控件导致回发?
- asp.net-mvc – ACS安装,但MVC 4.0应用程序仍然重定向,无法
- 实体框架 – 等同于.HasOptional在实体框架核心1(EF7)
- asp.net-mvc – 在没有模型的情况下手动将验证添加到文本框
- asp.net – 使用FormsAuthentication持久的cookie超时
- 各大输入法分类词库内部格式的简单比较
- 为什么asp.net将页面包装在一个表单中?
- 使用System.Net.Mail中的SMTP发送邮件(带附件)
- asp.net – 从启用AJAX的WCF服务返回错误详细信息
- asp.net-mvc – 在asp.net mvc 3剃刀中识别html助手的问题
- asp.net-mvc – 在Asp.Net MVC中使用千位分隔符的
- 将ASP.NET身份与核心域模型分离 – 洋葱架构
- asp.net-mvc – SelectListItem中的Selected属性
- asp.net-mvc – 使用Asp.net MVC 4中的OutputCac
- asp.net-mvc – ASP.NET MVC Beta 1:DefaultMod
- asp.net-mvc – 找到相同类型的两个实体之间的差
- asp.net-mvc – Bug? ASP.NET MVC 2中的客户端验
- asp-classic – 经典ASP中500 Vs 500.100错误
- asp.net-mvc C 在EditorFor for child对象中使用
- asp.net-mvc-3 – 如何从ASP.NET MVC#输出中删除
- asp.net C MVC4 C ContextDependentView C
- asp.net-mvc-3 C 如何从ASP.NET MVC#输出中
- asp.net-mvc C 已经使用相同的参数类型定义
- asp.net-core C 如何使用ASP.NET注册OData
- asp.net-mvc C 使用AD的ASP.NET MVC表单Aut
- ASP.Net C AJAX UpdatePanel中的Javascript
- asp.net C 适用于多个用户的EWS通知中心
- asp.net-mvc-4 C 在EF迁移配置类的Seed方法
- asp.net-mvc C ASP.NET MVC中的WebApi [Fro
- asp.net-mvc C 未在ELMAH中记录的错误