我有 2 个数组需要传递给 View 并显示在 View 中。现在我有:
String[] unactivePanelsHeader = new String[] {"GT5C", "GT5E", "GT5P", "GT5W"};
int[] unactivePanelsValues = new int[4];
//Values for unactivePanelsValues created with a linq query
ViewBag.unactivatedHeader = unactivePanelsHeader;
ViewBag.unactivatedPanels = unactivePanelsValues;
然后结果显示在 View 中。
<table>
<tr>
@for (int i = 0; i < 4; i++ )
{
<td>@ViewBag.unactivatedHeader[i]</td>
}
</tr>
<tr>
@for (int i = 0; i < 4; i++ )
{
<td>@ViewBag.unactivatedPanels[i]</td>
}
</tr>
它有效,但我是这个平台的新手,似乎应该有更好的方法。
最佳答案
Viewbag 主要用于通用 View ,当您不知道要显示什么类型的数据时。显示您事先知道其类型的信息的 View 应创建为强类型 View 。您为所有 View 数据创建一个具有属性的模型,在您的 Controller 中创建该模型的一个实例并将该模型传递给您的 View 。例如,模型可能如下所示:
class MyModel
{
IList<string> UnactivatedHeaders { get; set; }
IList<int> UnactivatedPanels { get; set; }
public MyModel
{
UnactivatedHeaders = new List<string>();
UnactivatedPanels = new List<int>();
}
}
然后你的 Controller 会像这样调用你的 View :
public ActionResult Index()
{
var model = new MyModel();
model.UnactivatedHeaders.Add("GT5C");
// and so on...
return View(model);
}
在您看来,您将能够像这样访问模型的属性:
@foreach(var header in Model.UnactivatedHeaders) {
<td>@header</td>
}
要创建强类型 View ,首先要创建模型并至少编译一次项目。然后创建您的 View 并标记复选框“创建强类型 View ”并在下面的下拉列表中选择您的模型类。
关于c# - 将相当于关联数组的内容从 Controller 传递到 MVC 4 中的 View 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12513702/