ASP.NET MVC: Как я передаю список (от класса в Модели) к повторителю в Представлении?

Решено ... модуль узла не был установлен правильно .. запуск npm install несколько раз решил его

5
задан Tablet 24 November 2008 в 20:45
поделиться

4 ответа

Скажем, Ваше действие контроллера смотрит что-то как

public ActionResult List()
{
    List<string> myList = database.GetListOfStrings();
    (...)
}

Теперь Вы хотите передать свой список представлению, сказать "List.aspx". Вы делаете это при наличии возврата действия ViewResult (ViewResult является подклассом ActionResult). Можно использовать Метод просмотра Контроллера возвратить ViewResult как так:

public ActionResult List()
{
    List<string> myList = database.GetListOfStrings();
    (...)
    return View("List", myList);
}

Чтобы смочь получить доступ к списку способом со строгим контролем типов в Вашем представлении, это должно произойти из ViewPage, где T является типом данных, Вы являетесь передающими в. Таким образом в текущем случае наше представление (в List.aspx.cs) было бы что-то вроде этого:

public partial class List : ViewPage<string>
{
    (...)
}

Данные передали в представление, таким образом упоминается как "Видеоданные". Для доступа к данным необходимо пройти ViewData. Свойства модели на ViewPage. Таким образом для рендеринга содержания списка Вы записали бы (в List.aspx)

<ul>
    <% foreach(var s in this.ViewData.Model){ %>
    <li> <%= s %> </li>
    <% } %>
</ul>

Здесь, это. ViewData. Модель имеет тип, Вы указали параметр типа T в ViewPage, таким образом, в нашем случае это. ViewData. Модель имеет список типов.

Можно использовать повторитель для рендеринга материала как это, но я не рекомендовал бы это. Если Вы хотите использовать что-то подобное, проверьте модуль Сетки проекта MvcContrib на CodePlex.

10
ответ дан 18 December 2019 в 09:54
поделиться

Быстрый и грязный путь состоит в том, чтобы передать его через ViewData

public ActionResult List()
{
    ViewData["MyList"] = new List<string> () {"test1", "test2"};

    return View ();
}

затем можно получить доступ к нему в представлении

<ul>
<% foreach (string item in (List<string>)ViewData["MyList"]) { %>
    <li><%= item %></li>
<% }%>
</ul>
4
ответ дан 18 December 2019 в 09:54
поделиться

Если я не ошибаюсь, управление повторителем требует модели страницы. (Модель страницы, являющаяся, что классическое использование ASP.NET)

Но необходимо смотреть на эту ссылку: http://haacked.com/archive/2008/05/03/code-based-repeater-for-asp.net-mvc.aspx

1
ответ дан 18 December 2019 в 09:54
поделиться

ASP.NET MVC имеет пару способов передать данные Вашему Представлению. Основной способ передать Ваши образцовые классы Представлению состоит в том, чтобы включать его в возвращенный класс ViewResult от Вашего контроллера, как ниже:

Function List() As ViewResult
    ' pass other information in the viewdata dictionary
    ViewData("Title") = "All Items"
    ' get our item list from the Model classes
    Dim items = Model.ItemRepository.GetAllItems()
    ' return as part of result
    Return View(items)
End Function

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

<% For Each item In ViewData.Model %>
    <%=item.Name%>
<% End If %>

Другой метод передающих данных через словарь ViewData как показано в функции контроллера выше. Можно получить доступ к этому из представления как:

<%=ViewData("Title")%>

Надежда, которая помогает.

2
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: