Я новичок в asp.net и MVC. У меня есть метод службы Jumbo(). Этот метод возвращает список, содержащий имя, фамилию и номер контакта. И я называю этот метод из моего основного проекта, как показано ниже. Также я возвращаю его на страницу просмотра.
var info = add.jumbo();
ViewData["sample"] = info;
return View("FormResults");
Когда я отлаживаю код, переменная "информация" содержит все необходимые мне данные. Проблема в том, как я перебираю переменную в таблице html с помощью бритвы. Я много искал, чтобы найти решение, но я потерпел неудачу. Пожалуйста, помогите мне с решением. Заранее спасибо.
Случай 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.
}
}
Сначала вам нужно передать модель в представление:
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
На ваш взгляд напишите цикл foreach, как показано ниже.
@model List<Object>
@foreach(var item in Model)
{
item.YourProperty;//without html
<label>@item.YourProperty</label> //in html
}