首页 > 解决方案 > 如何显示来自控制器的值?

问题描述

public ActionResult Dashboard()
    {
        var data = Processor.LoadBarangays();
        List<BarangayModel> barangays = new List<BarangayModel>();

        **int totalConfirmed = 0;
        int totalPUI = 0;
        int totalPUM = 0;**

        foreach (var row in data)
        {
            ***totalConfirmed = +row.Confirmed;
            totalPUI = +row.PUI;
            totalPUM = +row.PUM;***

            barangays.Add(new BarangayModel
            {
                Barangay = row.Barangay,
                Confirmed = row.Confirmed,
                PUI = row.PUI,
                PUM = row.PUM
            });
        }

        return View(barangays);
    }

我有上面的代码来显示这个表:红色标记现在我添加了上面强调的代码,这样我就可以在蓝色标记的卡片中显示它:蓝色标记。如何在视图中显示变量的值?我可以在单个控制器中使用多个视图吗?谢谢你。

标签: c#asp.net-mvcmodel-view-controllerbootstrap-4

解决方案


似乎您正在寻找的是在单个视图中显示多个视图,因为在您的情况下,您只能从控制器返回一个Dashboard(当您未指定时,它们必须与方法同名)

您可以使用部分视图来做到这一点。这取决于你是哪个版本,如果是 .NET 框架,net core 等,如果你正在使用 razor 或任何其他前端框架。如果您使用剃刀,如果您键入@HTML.Partial("viewname")将在您的“主”视图中加载部分视图。您可以将模型(对象)作为第二个参数发送给它@HTML.Partial("viewname", model)

对于您的示例,您要返回return View(barangays);的是红色框。然后要包括蓝色的,你要做的就是扩展你的模型。所以你BarangayModel应该成为 aDashboardModel并且其中一个属性必须是List<BarangayModel>

class DashboardModel{
   public List<BarangayModel> BarangayModelList {get;set;}
}

这样做的原因是因为你现在必须添加你的红框。以免调用对象 PersonStatus ,示例如下:

class PersonStatus{
    int confirmed {get;set;}
    int recovered {get;set;}
    //rest of the properteis
}

然后你扩展你DashboardModel以包含这个新对象:

class DashboardModel{
   public List<BarangayModel> BarangayModelList  {get;set;}
   public PersonStatus PersonStatus {get;set;}
}

所以Dashboard.cshtml现在你需要指定新模型。通常位于视图的第一行。看起来像这样@model List<BarangayModel>,您需要将其更新为@model DashboardModel

当您更改为List<BarangayModel>新的时,打印表格的 foreach 将失败。这意味着您可能有类似foreach(var bm in Model)现在的东西,您必须将其更新为foreach (var bm in Model.BarangayModel)

现在您在视图上拥有这两个信息,但您只打印BarangayModel

您需要做的是在与此视图(或Shared其中一个)相同的文件夹中创建一个视图,该视图将接收新PersonStatus对象作为参数。

那么你需要从你的主视图中调用它作为一个局部视图,并传递参数:

@Html.Partial("PersonStatusView", Model.PersonStatus);

或者

<partial name="PersonStatusView" model="@Model.PersonStatus);

取决于您正在运行的版本/框架。


推荐阅读