c# - 在 ASP.Net Core MVC 中的请求之间传递复杂对象的最佳方法
问题描述
我仍在学习 asp.net 核心,需要知道我是否以正确的方式解决这个问题。在我的应用程序中,我有一个页面充当创建复杂对象的向导。我正在使用视图模型来控制输入。视图模型的简要概述是:
主对象
-2 个子对象(每个包含 3 个子对象)
-第二个子对象(包含 1 个子对象)
我已经到了可以毫无问题地创建主对象和所有子对象的地步。下一步是为 2 个子对象添加搜索选项。
目前我有一个指向子对象搜索页面的链接,我正在使用 TempData 将所选对象的 ID 传回(因为 TempData 不支持复杂对象)。在我的原始控制器上,我正在检查密钥的 TempData,如果它存在,我正在查询数据库(通过 _context)以获取所选对象。
子控制器:
TempData["ChildObjectId"] = SelectedID;
return Redirect(MasterObjectControllerCreationURL);
主对象控制器:
if (TempData.ContainsKey("ChildObjectId"))
{
ViewData["ChildObject"] = _context.ChildObject.Include(x => x.SubObject).Where(x => x.ChildObjectId == Convert.ToInt32(TempData["ChildObjectId"])).FirstOrDefault();
TempData.Remove("ChildObjectId");
}
主对象创建页面:
if (ViewData.ContainsKey("ChildObject"))
{
Set field variables for the fields we want.
}
最终,这将导致 2 次数据库调用,一次用于搜索,然后一次用于下一次检索。这是处理问题的最有效方法,还是有更好的解决方案?似乎应该有一种更有效的方法来处理这个问题。我知道我可以为所有有问题的字段设置 TempData,但这会导致 40 个可能的字段存储在 TempData 中。也许这不是问题并且是正确的方法,我只是对 ASP.Net Core 和 MVC 了解不够多。
解决方案
推荐阅读
- linear-programming - 如何使用二进制变量在 LPsolve 中添加依赖约束
- reactjs - 为什么在渲染组件之前触发 useEffect() ?
- hyperlink - target ="_blank" 自动添加到电子邮件中
- html - HTML -> 固定顶部,具有最小高度和动态平方内容的灵活底部
- javascript - 调用 componentDidUpdate() 时页面会短暂冻结
- python - 我正在对黄金配置与应该与黄金配置相同的其他文件目录进行差异+比较
- pandas - value_counts 前 20 条记录
- php - Woocommerce rest api 类别和图片上传/添加问题
- mongodb - 时间:MongoDB 中的日期和时间
- qml - 创建新的自定义 QtQuick 视图以与模型一起使用