2012-06-04 2 views
0

Я пытаюсь проанализировать данные из моего ViewData, но это не так хорошо.Как анализировать данные из ViewData

Контроллер:

public ActionResult ListFilm() 
     { 
      MediaCatalog mediaCL = new MediaCatalog(); 

      // Retrieve a list of film media's 
      List<CatalogDb.FilmMedia> listFilmMedia = new List<CatalogDb.FilmMedia>(); 
      listFilmMedia = mediaCL.GetAllFilmMediaTitles(); 

      ViewData["FilmList"] = listFilmMedia.ToList(); 

      return View(); 
     } 

Вид:

<% foreach(var item in (ViewData["FilmList"] as List<CatalogDb.FilmMedia>)) { %> 
<%=item.title %> 
<% } %> 

Я заметил, что код, написанный в моем файле представления обрабатывается непосредственно в источнике, так и для какой-то причине его не выполняется как код?

+0

Лично мне нравится использовать ViewBag, а не ViewData, поскольку он строго типизирован (он использует новую динамическую функцию .NET 4.0 под капотом). – Styxxy

+0

@Styxxy, не могли бы вы привести пример? Мне очень хотелось бы посмотреть, как это можно сделать. – JavaCake

+1

Вместо 'ViewData [" MyProperty "]' вы делаете 'ViewBag.MyProperty', вот и все; Да, да, тебе больше не нужно бросать. Примечание. Для этого вам нужен ASP.NET MVC 3. – Styxxy

ответ

1

Я лично пользуюсь свойством ViewBag, он был добавлен в ASP.NET MVC3. Он использует dynamic под капотом, что делает также ViewBag. (ViewData использует словарь под капотом и, таким образом, всегда возвращает объект, который вы должны использовать).

Так что, в основном, вместо использования ViewData["MyPropery"] as MyType вы можете позвонить по телефону ViewBag.MyProperty, и вам не нужно его использовать (в «MyType»).

2

Поскольку вы используете механизм просмотра бритвы, ваш синтаксис неверен и ваш код не обрабатывается. В razor view engine вы должны написать что-то вроде

@foreach (var item in (ViewData["FilmList"] as List<CatalogDb.FilmMedia>)) 
{ 
@item.title 
} 

что вы написали есть веб-формы просмотра синтаксиса двигателя. Вы можете переключиться на этот механизм просмотра или написать код в синтаксисе бритвы, чтобы ваш код обрабатывался и выполнялся.

+0

Я использую двигатель бритвы. Это хлопот? Я мог бы просто изменить его? – JavaCake

+0

@JavaCake его не хастл, вам просто нужно использовать правильный синтаксис, упомянутый выше, для вывода материала. Синтаксис, который вы используете, предназначен для механизма веб-форм. –

+0

Спасибо Хасан. У меня есть дополнительная проблема. My CatalogDb - это пространство имен из * .dbml. Есть ли способ, которым я могу ссылаться на это пространство имен в моем проекте webapplication? – JavaCake

Смежные вопросы