如何解析ViewData中的数据

时间:2012-06-04 20:49:51

标签: asp.net

我正在尝试解析来自我的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 %>
<% } %>

我注意到我的视图文件中编写的代码是直接在源代码中解析的,所以由于某种原因它没有作为代码执行?

2 个答案:

答案 0 :(得分:2)

由于您使用的是razor视图引擎,因此您的语法不正确,并且您的代码未被解析。 在razor view engine中,您必须编写类似

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

你在那里写的是web表单视图引擎语法。您可以切换到该视图引擎,也可以使用razor语法编写代码,以便解析和执行代码。

答案 1 :(得分:1)

我个人使用ViewBag属性,它已被添加到ASP.NET MVC3中。它使用引擎盖下的dynamic,这使ViewBag也强类型化。 (ViewData在引擎盖下使用字典,因此总是返回一个你必须投射的对象。

基本上,您可以直接调用ViewData["MyPropery"] as MyType而不是使用ViewBag.MyProperty,而不需要将其转换为“{MyType”。