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

razor view engineを使用しているため、構文が正しくなく、コードが解析されません。かみそりのビューエンジンでは、次のようなものを書く必要があります

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

そこに書いたのは、Webフォームビューエンジンの構文です。そのビューエンジンに切り替えるか、コードを解析して実行するためにかみそりの構文でコードを書くことができます。

于 2012-06-04T20:57:09.353 に答える
1

私は個人的にこのViewBagプロパティを使用していますが、ASP.NETMVC3に追加されています。ボンネットの下でダイナミックを使用しているため、ViewBag強く型付けされています。(ViewData内部で辞書を使用するため、常にオブジェクトを返します。これはキャストする必要があります)。

したがって、基本的には、を使用する代わりに、ViewData["MyPropery"] as MyType直接呼び出すことができ、ViewBag.MyProperty(「MyType」に)キャストする必要はありません。

于 2012-06-04T21:16:57.440 に答える