Как перебрать переменную списка в HTML, используя бритву

1

Я новичок в asp.net и MVC. У меня есть метод службы Jumbo(). Этот метод возвращает список, содержащий имя, фамилию и номер контакта. И я называю этот метод из моего основного проекта, как показано ниже. Также я возвращаю его на страницу просмотра.

var info = add.jumbo();
ViewData["sample"] = info;

return View("FormResults");

Когда я отлаживаю код, переменная "информация" содержит все необходимые мне данные. Проблема в том, как я перебираю переменную в таблице html с помощью бритвы. Я много искал, чтобы найти решение, но я потерпел неудачу. Пожалуйста, помогите мне с решением. Заранее спасибо.

Теги:
razor
asp.net-mvc-4

3 ответа

3
Лучший ответ

Случай 1: В основном вы можете наблюдать это в своем приложении. MVC сам предоставит вам свой ответ. Когда? Когда вы создаете представление против действия, возвращающего список. Скажите, что ваше действие вернуло список клиентов, после чего вы можете наблюдать следующий код.

@model IEnumerable<Customer>

<h2>Customers</h2>
<p>
    @Html.ActionLink("Create New", "CreateCustomer", "ControllerName")
</p>
<table>
    <tr>

        <th>
            @Html.DisplayNameFor(model => model.Email)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th></th>
    </tr>

    @foreach (var item in Model)
    {    
        <tr>           
            <td>
                @Html.DisplayFor(modelItem => item.Email)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Name)
            </td>

                <td>                        

                    @Html.ActionLink("Edit |", "UpdateCustomer", new { id =  item.Id}) 
                    @Html.ActionLink("Details", "Details", new { id =  item.Id}) 
                    @Html.ActionLink("Delete", "Delete", new { id =  item.Id})                      
               </td>           
        </tr>
    }
</table>

Случай 2: ваш сценарий - это когда вы отправляете список в ViewData. Затем вам нужно включить ViewData в соответствующий список моделей, а затем вы можете выполнить такой же цикл foreach. Действие: var info = add.jumbo(); ViewData ["sample"] = info;

return View("FormResults");

Посмотреть:

  @if (ViewData["sample"] != null)
    {
        List<Info> infoList = (List<Info>)ViewData["sample"];
        foreach (var i in infoList)
        { 
        //Perform your html here enclosed with html tags.
        }        
    }
  • 0
    Отлично. Спасибо за ваш пост. Работает нормально.
5

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

return View("FormResults", info);

И в представлении вам нужно указать тип модели и использовать @для обозначения кода, а не html:

@model List<Foo> // Whatever your list is
@foreach (var item in Model)
{
    <span>@item.Text</span>
}

Здесь блог об этом подробно: http://weblogs.asp.net/scottgu/asp-net-mvc-3-new-model-directive-support-in-razor

  • 0
    Я не использую модель. Я вызываю сервис из моего контроллера и сохраняю его в переменной. Также я передаю свои данные для просмотра. У меня есть отдельный проект для моих услуг. На самом деле я не уверен, правильно ли я это делаю. пожалуйста, помогите мне
  • 0
    Предположим, у меня есть сервисный метод Jumbo () в project1, и я вызываю этот метод из project2. У меня есть список с именем UserTable в project1. Я извлекаю данные из базы данных и сохраняю их в этом списке (project1). Из моего проекта2 я вызываю этот метод и сохраняю его в переменной. Как я могу включить этот список в мой View в project2? Пожалуйста, помогите мне...
Показать ещё 2 комментария
2

На ваш взгляд напишите цикл foreach, как показано ниже.

@model List<Object>
@foreach(var item in Model)
{
  item.YourProperty;//without html
  <label>@item.YourProperty</label> //in html
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню