我的控制器中有两个方法在点击时通过ajax调用。两者完全相同(从数据库中检索相同的数据),并返回一个部分视图以及包含检索数据的模型。唯一的区别是视图。在控制器中绕过冗余代码
public PartialViewResult FormA()
{
[...// Code]
return PartialView("_FormA", ModelWithData)
}
public PartialViewResult FormB()
{
[...// same Code as in FormA()]
return PartialView("_FormB", ModelWithData)
}
这两个视图使用相同的数据,但显示不同的东西。
如果FormB()
被称为FormA()
肯定已被调用过。
必须有办法绕过第二个方法/数据库请求。由于额外的数据库请求,它明显减慢了应用程序的速度。
我的问题似乎真的愚蠢到我,但我没能找到一个解决办法...
THX对您有所帮助!
基于这个信息我不能说这绝对是好建议,但它可能是,你可以缓存结果在'FormA'并让他们退出'FormB'。您将介绍一种从缓存中获取或根据需要转到数据库的新方法。 – Crowcoder
如果两者具有相同的代码,则需要将结果存储在缓存中,否则TempData将是减少数据库请求的不错选择。 –
不能只提取私有方法中的共享代码?而且这也是您可以缓存从DB检索到的内容的位置。 –