在MVC中存储/调用重复代码块

时间:2010-10-08 17:54:12

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

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

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

2 个答案:

答案 0 :(得分:7)

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

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
    }
}

答案 1 :(得分:1)

我喜欢有一个“Helpers”文件夹,其中包含用于跨控制器重用函数的类似内容。

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

我不知道其中任何一个是否合适,但是他们保持代码相当整洁和有条理并且很好地保持在一起。