2009-05-21 4 views
1

나는 강하게 부분보기강력한 형식보기 차이 (조립 대 MVC 소스)

컨트롤러에서
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"  Inherits="System.Web.Mvc.ViewPage<IEnumerable<Pt.Data.Services>>" %> 
<table> 
    <% foreach (Pt.Data.Services item in Model) 
     { Html.RenderPartial("ServiceItem",item); } %> 
</table> 

를 입력 만들려고 해요 :

IEnumerable<Services> Model=null; 
using (tl ctx = new tl(Config.ConnectionString)) 
{ 
    Model = ctx.Services.ToList(); 
} 
return View("List",Model); 

이 workied 이진 어셈블리 System.Web.Mvc이 참조 된 프로젝트에서 실행될 때 유용합니다.

그러나 바이너리 어셈블리를 제거하고 디버깅을 위해 MVC 소스가있는 프로젝트를 추가하면 강력한 형식의 뷰를 인식하지 못합니다.

그것은처럼 일하고 ViewPage 대신 내가 오류를 받고 있어요 결과 ViewPage<TModel>

의 :

Compiler Error Message: CS1579: foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'`

왜 것 MVC가 아니라 소스와 컴파일이 작동합니까? 소스를 올바르게 실행하려면 어떻게해야합니까?

답변

4

당신이 ~이 라인을 변경 한/조회 /의 Web.config이에

<pages validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=31BF3856AD364E35"> 

는 사실이 스티브 샌더슨의 post 도움이 될 수

<pages validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=NULL" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=NULL" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, 
          System.Web.Mvc, Version=1.0.0.0, Culture=neutral, 
          PublicKeyToken=NULL"> 

을? :

+0

아니요, PublicKeyToken을 NULL로 설정하지 않았습니다. 정말 도움이 될 수 있습니다. 지금 시도해 보겠습니다. – bug0r

+0

예,이 방법이 효과적입니다. 감사합니다. – bug0r

+0

이것은 나를 위해 일하지 않았다. 더 이상 뷰를 찾을 수 없었습니다. –

0

참조 된 소스 프로젝트가 자체 빌드 출력 (어셈블리)과 다르게 동작하는 원인을 알 수 없습니다. 여전히 추천 할만한 내용은 다음과 같습니다.
1- 사용중인 소스가 조립품과 동일해야합니다.
2- 소스 프로젝트에 대한 참조를 추가했는지 확인하십시오.
솔루션 파일의 3-RC에서 깨끗한 솔루션을 선택한 다음 다시 빌드하고 다시 시도하십시오.

+0

더 긍정적 결과. 아마 이유는 MVC의 컴파일에있는 것 같아요. 릴리스 모드의 컴파일 된 소스 크기는 179 712 바이트입니다. 그러나 MVC 릴리스의 바이너리 어셈블리 크기는 186 176 바이트입니다. 일부 일반 클래스는 컴파일되지 않았거나 이와 유사한 것처럼 보입니다. – bug0r