2012-06-04 3 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

필자는 개인적으로 ViewData보다는 ViewBag를 사용하고 싶습니다. 강력하게 형식화되었으므로 (ViewBag는 .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 그게 당신이 방금 물건을 출력하기 위해 위에서 언급 한 올바른 구문을 사용해야 hastle. 사용중인 구문은 웹 양식 엔진 용입니다. –

+0

감사합니다. 추가 문제가 있습니다. 내 CatalogDb는 * .dbml의 네임 스페이스입니다. 내 webapplication 프로젝트에서이 네임 스페이스를 참조 할 수있는 방법이 있습니까? – JavaCake

관련 문제