首页 > 解决方案 > 将模型中的多个字典传递给视图?

问题描述

我需要一些建议和帮助。我是 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

解决方案


您的样品有几个问题;但是,“如何在剃刀视图上显示字典”的问题已经在这里提出并回答:ASP.NET MVC Binding to a dictionary

此外,我假设您正在使用更新版本的 ASP.NET MVC。如果您确保调用您正在开发的版本,这将是有益的。发布您的视图代码也将大大有助于获得全面的答案以帮助您前进。

至于你的其他问题:

您将这两个集合放入 ViewData 以及您已实现的模型类中。这是不必要的。在这种情况下,只需将集合放入模型并将模型绑定到视图即可。

只要您已将视图中的模型定义为您在此处作为示例给出的模型类,那么您唯一需要做的就是按照我上面提供的链接中的说明进行操作。

请记住,您对字典的引用将在您的视图Model.stageDataModel.stepData的循环内。


推荐阅读