嘿所有, 再次对不起我。这次我有一个我认为相当普遍的问题。我在控制器中一遍又一遍地使用几乎完全相同的代码来设置viewModel。我的问题是,有没有办法在MVC项目中的某处存储此代码,可能让它返回一个viewModel,并在同一个项目中从控制器调用它。
我正在努力关注DRY,但似乎无法找到这方面的任何资源。提前谢谢!
答案 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”文件夹,其中包含用于跨控制器重用函数的类似内容。
如果它仅在一个控制器中使用,我喜欢将这些功能放在控制器的底部并将它们标记为私有,这样它们就不能成为动作。
我不知道其中任何一个是否合适,但是他们保持代码相当整洁和有条理并且很好地保持在一起。