Как передать список из контроллера для просмотра в MVC 3

У меня есть список & lt; & gt; связан с некоторыми данными в действии контроллера, и я хочу передать этот список & lt; & gt; для просмотра, чтобы связать с DataGrid в Razor View.

Я новичок в MVC. Может ли кто-нибудь помочь мне, как пройти и как получить доступ в View.

Ответы на вопрос(4)

которая содержит ваш список и другие вещи, необходимые для просмотра.

Например

public class MyModel
{
    public List<string> _MyList { get; set; }
}

Из метода действия поместите желаемый список в модель,_MyList свойство, например:

public ActionResult ArticleList(MyModel model)
{
    model._MyList = new List<string>{"item1","item2","item3"};
    return PartialView(@"~/Views/Home/MyView.cshtml", model);
}

По вашему мнению, получите доступ к модели следующим образом

@model MyModel
foreach (var item in Model)
{
   <div>@item</div>
}

Думаю, это поможет начать.

как передача объекта в метод. Взгляни на Controller.View Метод

protected internal ViewResult View(
    Object model
)

Что-то вроде этог

//controller

List<MyObject> list = new List<MyObject>();

return View(list);


//view

@model List<MyObject>

// and property Model is type of List<MyObject>

@foreach(var item in Model)
{
    <span>@item.Name</span>
}
 Jogi27 февр. 2017 г., 18:21
Что, если вы хотите отправить 2 отдельных списка из контроллера для просмотра?
 user791863008 нояб. 2017 г., 14:54
есть способ получить данные без цикла foreach и просто напишем model => model.Data @ archil
 jonas07 авг. 2014 г., 23:36
Работал для меня, когда у меня был@Model вместо того@model.
 archil28 февр. 2017 г., 08:10
Затем вы должны создать класс ViewModel, который имеет два свойства List и передать экземпляр этого класса для просмотра

В контроллере:

public ActionResult Index()
{
  var invoices = db.Invoices;

  var categories = db.Categories.ToList();
  ViewData["MyData"] = categories; // Send this list to the view

  return View(invoices.ToList());
}

С учетом

@model IEnumerable<abc.Models.Invoice>

@{
    ViewBag.Title = "Invoices";
}

@{
  var categories = (List<Category>) ViewData["MyData"]; // Cast the list
}

@foreach (var c in @categories) // Print the list
{
  @Html.Label(c.Name);
}

<table>
    ...
    @foreach (var item in Model) 
    {
      ...
    }
</table>

Надеюсь, это поможе

 Nelson Miranda04 июл. 2017 г., 16:27
Hi @RehanKhan, я думаю, тебе следует создать 2 viewdata с 2 разными именами. ViewData ["MyList1"] и ViewData ["MyList2"] С уважением.
 Jogi27 февр. 2017 г., 22:36
что если вы хотите отправить 2 отдельных списка в View from Controller?

ViewBag для передачи данных из контроллеров в представлени

Добавьте следующее к своему контроллеру:

ViewBag.MyList = myList;

Тогда ты сможешь получить доступ к нему с твоей точки зрения:

@ViewBag.MyList

// e.g.
@foreach (var item in ViewBag.MyList) { ... }
 Dennis Traub12 июн. 2012 г., 12:36
Да, но это тоже самое простое.
 archil12 июн. 2012 г., 12:37
Я бы не согласился. Волшебные строки с viewbag проще, чем вернуть View (модель)?
 Dennis Traub12 июн. 2012 г., 12:40
Сложная магия на заднем плане и, конечно, не надежная. Но с точки зрения новичка это одно из самых простых возможных решений. Мне больше нравится ваш ответ, и я с радостью дам ему +1, но оставлю свой для справки.
 archil12 июн. 2012 г., 12:36
Это худший способ передачи данных с контроллера на просмотр
 archil12 июн. 2012 г., 12:43
Я категорически против использования viewbag / viewdata и предпочитаю использовать viewmodels:)

Ваш ответ на вопрос