在MVC中循环多个ViewBags

时间:2016-03-15 11:09:43

标签: c# asp.net-mvc razor

我正在将一个asp.net项目转换为mvc c#razor项目。在.net项目中,我有2个中继器控制。现在,我已经在控制器中转换了这两个转发器功能,并在ViewBag中获取了值,但我得到的值是单独的。我想要的是下面 -

ViewBag1(在.net中为Repeater 1),其值为 - 项目1 项目2 项目3

ViewBag2(在.net中为Repeater 2),其值为 - A1 A2 B1 B2 C1 C2

如何使用ViewBag或Model或任何其他方式实现以下功能 - 项目1       A1       A2 项目2       B1       B2 ... ..

提前致谢

2 个答案:

答案 0 :(得分:2)

MVC中的M代表MODEL,最好的方法是定义一个包含项目的数据类型(Model类)。 ViewBag将与限制一起使用,但通常用于辅助数据,例如下拉列表项(然后下拉“当前值”在模型中)。

像这样(非常基本,必要时扩展):

<强>模型/ Child.cs

public class Child { public string Name; }

<强>模型/ Parent.cs

public class Parent { public string Name; public List<Child> Children; }

<强>控制器/ ParentController.cs

public ActionResult Index()
{
    var child1 = new Child { Name = "Mikey" };
    var child2 = new Child { Name = "Betsy" };
    var parent = new Parent {
        Name = "John",
        Children = new List<Child>() { child1, child2 }
    };
    return View("Index", parent);
}

<强>查看/父/ Index.cshtml

@model Your.Namespace.Parent

@* render the Model (a.k.a. the parent object) *@
<h3>Parent</h3>
<h4>@(Model.Name)</h4>

<h3>Children</h3>
@* render Model.Children = the child objects *@
@foreach (var child in Model.Children)
{
    <h4>@(child.Name)</h4>
}

答案 1 :(得分:0)

这是一个字符串数据吗?如果是这样,您将能够使用foreachfor循环拆分和循环遍历字符串数组。

将值存储到控制器中的Viewbags,然后从View中访问它。