绕过控制器中的冗余代码

时间:2017-04-20 10:45:42

标签: c# asp.net-mvc code-duplication

我的控制器中有两个方法,通过点击ajax调用。两者完全相同(从数据库中检索相同的数据)并返回部分视图以及包含检索数据的模型。唯一的区别是观点。

public PartialViewResult FormA()
{
    [...// Code]

    return PartialView("_FormA", ModelWithData)
}

public PartialViewResult FormB()
{
    [...// same Code as in FormA()]

    return PartialView("_FormB", ModelWithData)
}

两个视图都使用相同的数据但显示不同的内容。

如果FormB()被调用,FormA()肯定已被调用过。

必须有办法绕过第二个方法/数据库请求。由于额外的数据库请求,它会明显减慢应用程序的速度。

我的问题对我来说似乎很愚蠢,但我无法找到解决方法......

谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

确定将某种过滤器传递给您的操作方法,如下所示

public PartialViewResult ShowForm(string filter)
{ 
  if(TempData["model"]  == null)
  {  
    [...// Code]
   TempData["model"] = ModelWithData; 
  }
   if(filter == "some_condition")
    return PartialView("_FormA", TempData["model"] as ModelWithData);
   else
     return PartialView("_FormB", TempData["model"] as ModelWithData);
}

现在明白你的意思了。您可以使用任何类型的状态管理机制。说TempData