【问题标题】:Storing/Calling Repeating Code blocks in MVC在 MVC 中存储/调用重复代码块
【发布时间】:2010-10-08 17:54:11
【问题描述】:

大家好, 再次对不起我。这次我有一个我认为相当笼统的问题。我在控制器中一遍又一遍地使用几乎完全相同的代码来设置 viewModel。我的问题是,有没有办法将此代码存储在 MVC 项目中的某个位置,可能让它返回一个 viewModel,并从同一项目中的控制器调用它。

我正在尝试关注 DRY,但似乎无法在这方面找到任何资源。提前致谢!

【问题讨论】:

  • 您不必为提出问题而道歉。
  • 你应该更快地进入重点。 SO 不是一个论坛,它是一个 QA 网站,所以让你的问题变得干燥!

标签: c# asp.net-mvc asp.net-mvc-2 dry


【解决方案1】:

您可以创建一个基本控制器来完成您的工作,然后从所有控制器中继承并调用您想要重用的方法。

public abstract class BaseController : Controller
{
    protected BaseController()
    {

    }

    protected void PopulateViewModel()
    {
        //code to populate view model here
    }
}

public class MyController : BaseController
{
    [HttpGet]
    public virtual ActionResult myAction()
    {
        PopulateViewModel();
        //do more stuff
    }
}

【讨论】:

    【解决方案2】:

    我喜欢有一个“Helpers”文件夹,其中包含类似这样的东西,用于跨控制器重用功能。

    如果只在一个控制器中使用,我喜欢将函数放在控制器的底部,并将它们标记为私有,这样它们就不能成为动作。

    我不知道其中任何一个是否正确,但它们使代码保持整洁有序,并将事物很好地结合在一起。

    【讨论】:

    • 这非常有效。我不知道您可以使用 helpers 文件夹来做到这一点,谢谢!
    • 从基类继承更符合标准 OO 和 DRY 原则。从开发的角度来看,帮助文件和实用程序类往往不太容易被发现,因此当人们落后于您时,他们无法轻易找到您的函数。
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 2016-09-21
    • 2020-04-14
    • 2021-09-20
    • 1970-01-01
    • 2016-01-20
    • 2012-04-17
    • 1970-01-01
    相关资源
    最近更新 更多