c# - 将相当于关联数组的内容从 Controller 传递到 MVC 4 中的 View 的最佳方法

标签 c# asp.net asp.net-mvc

我有 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/

相关文章:

c# - ASP :Button is not calling server-side function

c# - 如何在 ASP.NET Core 3 预览版中使用 Lamar 2?

页面头部的 asp.net 占位符

javascript - 如何读取具有动态 ID 的文本框的文本框值?

asp.net-mvc - AreaRegistration.RegisterAllAreas() 不是区域注册规则

c# - 带大括号的字符串格式化

c# - 不安全的字典线程——让我们打破一些东西

c# - 从 OleDbDataAdapter 填充数据集

c# - ASP.net 文本框在禁用时滚动

c# - 传递 id,但不要在实际 url 中显示它