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);
}
我有上面的代码来显示这个表:红色标记现在我添加了上面强调的代码,以便我可以在蓝色标记的卡片中显示它:蓝色标记。如何在视图中显示变量的值?是否可以在单个控制器中使用多个视图?谢谢。
似乎您要查找的是在一个视图中显示多个视图,因为从控制器中您只能返回一个视图,在您的情况下Dashboard
(当您不指定时,它们必须与方法同名)
您可以使用分部视图执行此操作。 这取决于您是哪个版本,如果是.NET框架,网络核心等,如果您正在使用Razor或任何其他框架作为前端。 如果您使用的是 Razor,如果您键入@HTML.Partial("viewname")
将在"主"视图中加载部分视图。您可以将模型(对象)作为第二个参数发送给它@HTML.Partial("viewname", model)
对于您的示例,您将返回return View(barangays);
这是红色框。 然后要包含蓝色的,您需要做的是扩展您的模型。因此,您的BarangayModel
应该成为DashboardModel
并且必须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);
取决于您正在运行的版本/框架。