Как отобразить список с помощью ViewBag
Привет, мне нужно показать список данных, используя viewbag.but, я не могу этого сделать.
Пожалуйста помогите..
Я пробовал эту вещь:
ICollection<Learner> list = new HobbyHomeService().FetchLearner();
ICollection<Person> personlist = new HobbyHomeService().FetchPerson(list);
ViewBag.data = personlist;
и внутренний вид:
<td>@ViewBag.data.First().FirstName</td>
Но это не отображает значение и дает ошибку: "Model.Person не содержит defibition для First()"
Ответы
Ответ 1
По вашему мнению, вы должны вернуть его к исходному типу. Без трансляции это просто объект.
<td>@((ViewBag.data as ICollection<Person>).First().FirstName)</td>
ViewBag - это динамический тип С# 4. Объекты, возвращенные из него, также являются динамическими, если не выполняются. Тем не менее, методы расширения, такие как .First() и другие Linq, не работают с динамикой.
Изменить - чтобы отправить комментарий:
Если вы хотите отобразить весь список, это так просто:
foreach (var person in ViewBag.data)
{
<li>@person.FirstName</li>
}
Методы расширения, такие как .First(), не будут работать, но это будет.
Ответ 2
Чтобы собрать все вместе, это должно выглядеть так:
В контроллере:
List<Fund> fundList = db.Funds.ToList();
ViewBag.Funds = fundList;
Тогда в представлении:
@foreach (var item in ViewBag.Funds)
{
<span> @item.FundName </span>
}
Ответ 3
просто используя данные 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>
Ответ 4
У меня была та же проблема, и я искал и искал.. но не получил никакого результата.
поэтому я поставил свой мозг в драйвере. и я придумал решение ниже.
попробуйте это на странице просмотра
в начале страницы добавить этот код
@{
var Lst = ViewBag.data as IEnumerable<MyProject.Models.Person>;
}
чтобы отобразить конкретный атрибут, используйте приведенный ниже код
@Lst.FirstOrDefault().FirstName
в вашем случае используйте код ниже.
<td>@Lst.FirstOrDefault().FirstName </td>
Надеюсь, что это поможет...
Ответ 5
Просто поставьте
List<Person>
в ViewBag и в представлении перечислите его в List
Ответ 6
//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>
}
Ответ 7
Это то, что я сделал, и это сработало...
С#
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];
..............
..............
}