【问题标题】:How to display values from controller?如何显示来自控制器的值?
【发布时间】:2020-08-01 04:11:37
【问题描述】:
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);
    }

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

【问题讨论】:

    标签: c# asp.net-mvc model-view-controller bootstrap-4


    【解决方案1】:

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

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

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

    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&lt;BarangayModel&gt;,您需要将其更新为@model DashboardModel

    当您将 List&lt;BarangayModel&gt; 更改为新的时,打印表格的 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);
    

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

    【讨论】:

    • 感谢您的帮助。我现在只有一个问题。 i.stack.imgur.com/XRq5v.png 我无法访问我的 BrgyModel(BarangayModelList) 的某些属性,因此我可以在表头中显示它。
    • @Andrew 您是否在局部视图的顶部使用了@model classnamehere?如果是这样,你的属性是public吗?
    • 我正在使用@model DashboardModel。是的,这一切都设置为公开。
       public class DashboardModel { public List BrgyModel { get;放; } 公共 PersonStatusModel PerStatusModel { 获取;放; } }
    • @Andrew 尝试使用带有大写字母的@Model 而不是model
    • 小写模型的结果相同。对不起,打扰你。我只是在互联网上找不到解决方案。
    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多