【问题标题】:Sharing identical controller code between areas in ASP.NET MVC在 ASP.NET MVC 中的区域之间共享相同的控制器代码
【发布时间】:2012-02-29 14:11:58
【问题描述】:

我在我的项目中的两个单独区域中有两个相同的控制器。

两者之间的唯一区别是基本控制器

  1. BrowsingSessionController:Area1BaseController
  2. BrowsingSessionController:Area2BaseController

控制器本身就很丰富,根据条件返回ViewsRedirectToActions

我不想在术语上重复自己,希望遵守 DRY 原则,想知道如何维护控制器结构但避免重复代码。

方法示例

浏览会话控制器内容

...
case ("byexpiry"): // Expiry Grid

    currentTemplateModel._TemplateExpiry =
        _browsingSessionTemplateRepository.GetBrowsingSessionLeadExpiryTemplateById(currentTemplateModel.Id);
    return View("SessionExpiryGrid",
                new SessionExpiryGridModel()
                {
                    ActiveBrowsingSessionTemplate = currentTemplateModel,
                    SessionGuid = guid
                });
...

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 dry


    【解决方案1】:

    使用组合而不是继承在控制器之间共享逻辑通常更好。

    您可以使用静态实用程序类来封装通用逻辑,并从您的控制器代码中调用它。

    该逻辑将存在于基地区域。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 2018-11-24
      相关资源
      最近更新 更多