2016-03-15 4 views
0

Я конвертирую проект asp.net в проект mvc C# razor. В проекте .net у меня было 2 элемента управления ретранслятора. Теперь я преобразовал эти 2 функции повторителя в контроллер и получил значение в ViewBag, но значение, которое я получаю отдельно. То, что я хочу, ниже -loop multiple ViewBags в MVC

ViewBag1 (который был Ретранслятор 1 в .net), где значения - Элемент1 Элемент2 Item3

ViewBag2 (который был Ретранслятор 2 в .net), где значения - А1 А2 В1 В2 С1 С2

Как можно достичь следующих с помощью ViewBag или модели или любым другим способом - Элемент1 А1 A2 Элемент2 B1 B2 ... ..

Заранее спасибо

+0

что ваш ожидаемый результат – anand

+0

выход как - First Show - Элемент1 чем следующая строка будет показывать A1, A2 .... как этот путь – ronibd

+0

'ViewBag.SomeProperty = yourRepeater1' ---- repeat для второго, просто используйте другое имя свойства. Затем в 'view' просто перебираем свойство. –

ответ

2

M в MVC означает 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

Я получаю сообщение об ошибке компиляции, когда я использую foreach (var child в Model.Children) – ronibd

+0

, когда я удаляю цикл foreach, я получаю другую ошибку. [Элемент модели, переданный в словарь, имеет type '....', но для этого словаря требуется элемент модели типа «System.String».] – ronibd

+0

Я просто улучшил пример ** Index.cshtml ** и протестировал его, эта версия действительно сработает. Просто используйте собственное пространство имен в первой строке. –

0

Это строка данных? Если это так, вы сможете разбить и перебрать строки с помощью массивов foreach или for.

Сохраните значения в Viewbags в контроллере, затем войдите в него из представления.

+0

Да, это строковые данные, я хранил данные в контроллере и использовал его в поле зрения, сначала ViewBag.LR, а не ViewBag.ChildR, но его предоставление всем LR, после этого все данные ChildR – ronibd

+0

Обратитесь к тому, что сказал @Rob Scott. Например, ViewBag.Property1 = "data1"; ViewBag.Property2 = "data2"; -Используйте это из контроллера, а затем разделите их в представлении. – Shanid

+0

Я сделал первую часть, затем как разделить по виду – ronibd