Asp.net 如何从ViewData解析数据

Asp.net 如何从ViewData解析数据,asp.net,Asp.net,我正在尝试解析ViewData中的数据,但进展不太顺利 控制器: public ActionResult ListFilm() { MediaCatalog mediaCL = new MediaCatalog(); // Retrieve a list of film media's List<CatalogDb.FilmMedia> listFilmMedia = new List<C

我正在尝试解析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();
        }
公共行动结果列表电影()
{
MediaCatalog mediaCL=新的MediaCatalog();
//检索电影媒体的
List listFilmMedia=新列表();
listFilmMedia=mediaCL.GetAllFilmMediaTitles();
ViewData[“FilmList”]=listFilmMedia.ToList();
返回视图();
}
视图:



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

因为您使用的是razor视图引擎,所以语法不正确,代码也没有被解析。 在这种情况下,你必须写一些

@foreach (var item in (ViewData["FilmList"] as List<CatalogDb.FilmMedia>))
{
 @item.title
}
@foreach(视图数据[“FilmList”]中的变量项作为列表))
{
@项目名称
}

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

由于您使用的是razor视图引擎,因此语法不正确,代码未被解析。 在这种情况下,你必须写一些

@foreach (var item in (ViewData["FilmList"] as List<CatalogDb.FilmMedia>))
{
 @item.title
}
@foreach(视图数据[“FilmList”]中的变量项作为列表))
{
@项目名称
}
您在那里写的是web窗体视图引擎语法。您可以切换到该视图引擎,也可以使用razor语法编写代码,以便解析和执行代码。

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

因此,基本上,您可以直接调用
ViewBag.MyProperty
,而不必将其转换为“MyType”)。

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


因此,基本上,您可以直接调用
ViewBag.MyProperty
,而不需要将其转换为“MyType”)。

我使用的是razor引擎。这很麻烦吗?不过我可以修改一下吗?@JavaCake这不是一件急事,你只需要使用我上面提到的正确语法就可以输出东西。您使用的语法用于web表单引擎。谢谢Hasan。我还有一个问题。My CatalogDb是*.dbml中的名称空间。有什么方法可以在我的webapplication项目中引用此命名空间吗?
编译器错误消息:CS0246:找不到类型或命名空间名称“CatalogDb”(是否缺少using指令或程序集引用?
我正在使用razor引擎。这很麻烦吗?不过我可以修改一下吗?@JavaCake这不是一件急事,你只需要使用我上面提到的正确语法就可以输出东西。您使用的语法用于web表单引擎。谢谢Hasan。我还有一个问题。My CatalogDb是*.dbml中的名称空间。是否有一种方法可以在我的webapplication项目中引用此命名空间?
编译器错误消息:CS0246:找不到类型或命名空间名称“CatalogDb”(是否缺少using指令或程序集引用?
我个人喜欢使用ViewBag而不是ViewData,因为它是强类型的(它在引擎盖下使用了.NET 4.0的新动态功能)。@Styxxy,你能举个例子吗?我想看看如何做到这一点。而不是
ViewData[“MyProperty”]
您可以使用
ViewBag.MyProperty
,仅此而已;哦,是的,您不必再强制转换了。注意:您需要ASP.NET MVC 3才能使用它。这非常简单。请回答我可以接受的问题。:-)我个人喜欢使用ViewBag而不是ViewData,因为它是强类型的(它在引擎盖下使用了.NET 4.0的新动态功能)。@Styxxy,你能举个例子吗?我想看看如何做到这一点。而不是
ViewData[“MyProperty”]
您可以使用
ViewBag.MyProperty
,仅此而已;哦,是的,您不必再进行强制转换。注意:您需要ASP.NET MVC 3才能使用它。这非常简单。请回答我可以接受的问题。:-)