0

我正在尝试从我的 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 %>
<% } %>

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

4

2 回答 2

2

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

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

您在那里写的是 Web 表单视图引擎语法。您可以切换到该视图引擎或以剃须刀语法编写代码,以便您的代码被解析和执行。

于 2012-06-04T20:57:09.353 回答
1

我个人使用该ViewBag属性,它已被添加到 ASP.NET MVC3。它使用引擎盖下的动态,这使得它ViewBag也是强类型的。(ViewData在引擎盖下使用字典,因此总是返回一个你必须转换的对象)。

因此,基本上,ViewData["MyPropery"] as MyType您可以直接调用ViewBag.MyProperty而不需要使用它,而无需将其强制转换(转换为“MyType”)。

于 2012-06-04T21:16:57.440 回答