【发布时间】:2023-03-11 14:09:02
【问题描述】:
我的控制器中有两种方法,在点击时通过 ajax 调用。两者都做完全相同的事情(从数据库中检索相同的数据)并返回部分视图以及包含检索数据的模型。唯一的区别是视图。
public PartialViewResult FormA()
{
[...// Code]
return PartialView("_FormA", ModelWithData)
}
public PartialViewResult FormB()
{
[...// same Code as in FormA()]
return PartialView("_FormB", ModelWithData)
}
两个视图都使用相同的数据,但显示的内容不同。
如果FormB() 被调用,FormA() 肯定之前被调用过。
必须有绕过第二种方法/数据库请求的方法。由于额外的数据库请求,它明显减慢了应用程序的速度。
我的问题对我来说似乎很愚蠢,但我找不到解决方法......
感谢您的帮助!
【问题讨论】:
-
基于此信息,我不能说这绝对是一个好建议,但您可能可以将结果缓存在
FormA中,然后在FormB中取回它们。您将引入一种从缓存中获取或根据需要进入数据库的新方法。 -
如果两者的代码相同,则需要将结果存储在缓存中,否则 TempData 将是减少数据库请求的好选择。
-
不能只提取私有方法中的共享代码?这也是您可以缓存从 DB 检索到的内容的地方。
标签: c# asp.net-mvc code-duplication