asp.net-mvc - 将模型中的多个字典传递给视图?
问题描述
我需要一些建议和帮助。我是 MVC 和一般编程的新手。
模型:
public class WorkflowStepsViewModel
{
public Dictionary<string, string[]> stageData { get; set; }
public Dictionary<string, List<string>> stepData { get; set; }
}
控制器:
public IActionResult Criteria(CriteriaViewModel model)
{
WorkflowStepsViewModel stepModel = new WorkflowStepsViewModel();
if (ModelState.IsValid)
{
//call GetSteps class
GetSteps steps = new GetSteps();
var stageData = steps.GetStages(model);
var stepData = steps.GetStep(stageData);
stepModel.stageData = stageData;
stepModel.stepData = stepData;
ViewData["stepData"] = stepData;
ViewData["stageData"] = stageData;
return RedirectToAction("GetWorkflow", "GetWorkflow", ViewData);
}
else
{
//show error
return View();
}
}
我想在视图中的两个字典中使用值和键..但我不知道如何。任何帮助都会很棒。我应该拆分我的模型,以便每个模型都有 1 个字典吗?我以为我可以从控制器中设置模型中的值,然后在视图中使用它。但是我不知道如何调用每个键和值。TIA 为您提供帮助。
解决方案
您的样品有几个问题;但是,“如何在剃刀视图上显示字典”的问题已经在这里提出并回答:ASP.NET MVC Binding to a dictionary
此外,我假设您正在使用更新版本的 ASP.NET MVC。如果您确保调用您正在开发的版本,这将是有益的。发布您的视图代码也将大大有助于获得全面的答案以帮助您前进。
至于你的其他问题:
您将这两个集合放入 ViewData 以及您已实现的模型类中。这是不必要的。在这种情况下,只需将集合放入模型并将模型绑定到视图即可。
只要您已将视图中的模型定义为您在此处作为示例给出的模型类,那么您唯一需要做的就是按照我上面提供的链接中的说明进行操作。
请记住,您对字典的引用将在您的视图Model.stageData
中Model.stepData
的循环内。
推荐阅读
- javascript - Node js,为什么我的函数不是函数?
- docker - 如何为 Google Cloud 中的虚拟机分配“容器注册表”权限
- url - 我们可以让 url 在新窗口中启动吗?
- ruby-on-rails - 如何根据新值自动更新多个值
- python - 没有关联子对象的对象的查询模型
- javascript - 无法从“node_modules/react-native/Libraries/ART/ARTSerializablePath.js”解析“art/core/class.js”
- css - 将自定义 CSS(持久性)应用到我经常从笔记本电脑查看的网站?
- ruby-on-rails - 可以在 <%= image_tag 中放置 <%= 标签吗?
- oracle-apex - 我可以从主详细信息表单创建者更改主键设置吗?
- android - 如何在 CollapsingToolbarLayout 下有折叠选项卡?