Как отобразить список с помощью ViewBag
Привет мне нужно показать список данных с помощью viewbag.но я не могу этого сделать.
Пожалуйста, помогите мне..
Я попытался это:
ICollection<Learner> list = new HobbyHomeService().FetchLearner();
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
ViewBag.data = personlist;
и внутренний вид:
<td>@ViewBag.data.First().FirstName</td>
но это не показывает значение и дает ошибку, говоря " модель.Person не содержит дефибиции для First ()"
7 ответов
на ваш взгляд, вы должны вернуть его к исходному типу. Без гипса это просто предмет.
<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td>
ViewBag является динамическим типом C# 4. Сущности, возвращаемые из него, также являются динамическими, если только не приведено. Однако, методы расширения, как .First () и все остальные Linq не работать с динамикой.
Edit-для обращения к комментарию:
Если вы хотите отобразить весь список, это так же просто, как это:
<ul>
@foreach (var person in ViewBag.data)
{
<li>@person.FirstName</li>
}
</ul>
методы расширения, как .First () не будет работать, но это будет.
просто используя данные Viewbag как IEnumerable list
@{
var getlist= ViewBag.Listdata as IEnumerable<myproject.models.listmodel>;
foreach (var item in getlist){ //using foreach
<span>item .name</span>
}
}
//---------or just write name inside the getlist
<span>getlist[0].name</span>
поставить все это вместе, вот как это должно выглядеть:
в контроллере:
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
затем в вид:
@foreach (var item in ViewBag.Funds)
{
<span> @item.FundName </span>
}
у меня была та же проблема, и я ищу и ищу .. но безрезультатно.
поэтому я включил мозги на полную мощность. и я придумал следующее решение.
попробуйте это на странице просмотра
в начале страницы добавьте этот код
@{
var Lst = ViewBag.data as IEnumerable<MyProject.Models.Person>;
}
для отображения конкретного атрибута используйте приведенный ниже код
@Lst.FirstOrDefault().FirstName
в вашем случае использовать ниже код.
<td>@Lst.FirstOrDefault().FirstName </td>
надеюсь, что это помогает...
//controller You can use this way
public ActionResult Index()
{
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
return View();
}
<--View ; You can use this way html-->
@foreach (var item in (List<Fund>)ViewBag.Funds)
{
<p>@item.firtname</p>
}
это то, что я сделал и это сработало...
C#
ViewBag.DisplaylList = listData;
в JavaScript
var dispalyList= @Html.Raw(Json.Encode(this.ViewBag.DisplaylList));
for(var i=0;i<dispalyList.length; i++){
var row = dispalyList[i];
..............
..............
}