绕过控制器中的冗余代码
Bypass redundant code in controller
我的控制器中有两个方法,在单击时通过 ajax 调用。两者做完全相同的事情(从数据库中检索 相同的数据 )和 return 部分视图以及包含检索到的数据的模型。唯一不同的是景色。
public PartialViewResult FormA()
{
[...// Code]
return PartialView("_FormA", ModelWithData)
}
public PartialViewResult FormB()
{
[...// same Code as in FormA()]
return PartialView("_FormB", ModelWithData)
}
两个视图使用相同的数据但显示不同的内容。
如果调用了FormB()
FormA()
肯定之前调用过
一定有办法绕过第二个 method/database 请求。由于额外的数据库请求,它明显减慢了应用程序的速度。
我的问题对我来说真的很愚蠢,但我找不到解决方法...
感谢您的帮助!
是的,通过将某种过滤器传递给您的操作方法,如下所示
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
我的控制器中有两个方法,在单击时通过 ajax 调用。两者做完全相同的事情(从数据库中检索 相同的数据 )和 return 部分视图以及包含检索到的数据的模型。唯一不同的是景色。
public PartialViewResult FormA()
{
[...// Code]
return PartialView("_FormA", ModelWithData)
}
public PartialViewResult FormB()
{
[...// same Code as in FormA()]
return PartialView("_FormB", ModelWithData)
}
两个视图使用相同的数据但显示不同的内容。
如果调用了FormB()
FormA()
肯定之前调用过
一定有办法绕过第二个 method/database 请求。由于额外的数据库请求,它明显减慢了应用程序的速度。
我的问题对我来说真的很愚蠢,但我找不到解决方法...
感谢您的帮助!
是的,通过将某种过滤器传递给您的操作方法,如下所示
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