2011-02-18 2 views
1

내 웹 앱은 다른 솔루션 위에 구축 된 솔루션입니다. 기본 솔루션은 여러 제품에 대한 플랫폼을 의미합니다. 대부분의 경우이 방법은 정상적으로 작동하지만 제품 별보기를 만들 때 이상한 일이 발생합니다.내 ascx 파일이 내 코드 숨김 속성을 선택하지 않는 이유는 무엇입니까?

내 코드 숨김 클래스에 ViewUserControl<SomeViewModel>을 사용하고 있습니다. 뒤에있는 코드에서 this.Model과이 클래스에서 기대할 수있는 다른 모든 기능을 이용할 수 있습니다. 하지만 내 ascx 파일에서 this.Model 또는 ViewUserControl에 정의 된 다른 속성에 액세스하려고하면 빨간색 squiggley 줄이 나타납니다. 내 코드에서 직접 정의한 속성에 액세스하려고하면 빨간색 squiggley 줄이 생깁니다.

재미있는 점은 어떤 실수를 저 지르지는 않는다는 것입니다. 뷰는 런타임에 잘 렌더링되고 빌드 오류를주지 않습니다. 하지만 내 ascx 파일 은 오류가있을 것이라고라고 생각합니다. 정확히 동일한보기 ()를 플랫폼 네임 스페이스에 작성하면 올바르게 작동합니다. 빨간 삐걱 거리는 소리가 들리지 않습니다.

나는 이것이 정말로 짜증나는 것을 알았다. 그것은 어떤 의미에서든 쇼 스토퍼가 아니지만 인텔리 센스와 모든 재즈가있는 IDE를 사용하려고한다면 제대로 작동하고 거기에 있어야하는 속성을 선택해야합니다.

누구도이 문제에 부딪 혔습니까? 이 문제를 해결할 방법을 알고 있습니까?

감사합니다.

편집

내가 몇 가지 코드를 게시 할 것을 요청했다.

namespace MyProject.MyProduct.Web.Views 
{ 
    public class EditSearch : ViewUserControl<SearchResultsViewModel> 
    { 
     public bool IsSearchTypeA() 
     { 
      ............... 
     } 

     public bool IsSearchTypeB() 
     { 
      ............... 
     } 
    } 
} 

을 그리고 여기 내 ASCX입니다 : 여기에 코드 뒤에 ASP.NET MVC가 나 코드를 사용하지 않는 수 없음을 말해 당신의 그들을 위해

<% 
    if (!this.IsSearchTypeB()) 
    { 
     string categoryPageTitle = this.Model.SearchWidgetParameters.Search.CategoryPageTitle; 
     string categoryPageUrl = this.Model.SearchWidgetParameters.Search.Filters.CategoryPageUrl; 

     if (!string.IsNullOrEmpty(categoryPageUrl)) 
     { 
      %> <div id="coid_website_backtoCategoryPageLink"> <% 

      string tocGuid = this.Model.SearchWidgetParameters.Search.Filters.TocGuid; 

      if (!string.IsNullOrEmpty(tocGuid)) 
      { 
       categoryPageUrl += "?guid=" + tocGuid; 
      } 

      var backToLink = new HyperLink(); 

      if (this.IsSearchTypeA()) 
      { 
       backToLink.Text = "Edit Search"; 
      } 
      else 
      { 
       backToLink.Text = "Back to " + TranslatedHtmlTextWriter.Translate(categoryPageTitle); 
      } 

      backToLink.NavigateUrl = TransactionOperations.AddContextToUrl(categoryPageUrl.StartsWith("/Browse/") ? categoryPageUrl : "/Browse/" + categoryPageUrl, 
                      WebsiteTransitionType.Default, // Requested: CategoryPage 
                      TransactionOperations.DefaultContextData); 
      backToLink.RenderControl(this.Writer); 
      %> 
       </div> 
      <% 
     } 
    } 
%> 

편집

뒤에, 미안하지만 말 하키 야. 이 프로젝트는 수년간 존재 해 왔으며 널리 사용되고있는 제품이 있습니다. 내 제품은 최근에야 플랫폼으로 점프하고 있습니다. 플랫폼 솔루션은 모든 곳의 코드를 사용하며 정상적으로 작동합니다. 실제로 런타임에서도 내 제품의 솔루션에서 잘 작동하지만, 필자의 ascx 파일은 내 코드에 대해 알지 못하는 문제가 있습니다. 또한 ViewUserControlSystem.Web.MVC 클래스입니다. ASP.NET MVC에서 코드 숨김이 사용되지 않는다고 아직도 말씀 하시겠습니까?

+3

ASP.NET MVC에서 코드를 사용해서는 안됩니다. 코드를 게시 할 수 있습니까? –

+0

그것은 나를 크게 혼란스럽게합니다. 코드 숨김을 사용하지 않으면 내 모델의 속성에 어떻게 액세스합니까? 코드 숨김은 내 모델이 특정 유형임을 지정합니다. 나는 그 물건들을 어떻게 얻을 수 있을지 모르겠다. – Samo

+0

어떤 버전의 MVC를 사용하고 있습니까? 나는 MVC 3을 사용하고 있는데 파일 뒤에 어떤 코드도 보이지 않는다. "코드 숨김"이라고하는 것은 컨트롤러와 모델입니다. –

답변

0

MVC를 개발 중이므로 코드를 사용할 수 없습니다. 대신, 당신은 당신의 .acsx 파일의 상단에이를 추가하는 방법에 대한 어떻게 생각하십니까 :

<%@ Import Namespace="Namespace.Model" %> 

이 그럼 당신은 너무 많은 합병증없이 당신이 거기에 모든 것을 액세스 할 수 있습니다.

+0

코드를 사용할 수 없습니까? 그건 말이 안되요. 플랫폼 솔루션은 모든 곳의 코드를 사용하며 작동합니다. 그렇다면 왜 내 것이 아닌가요? – Samo

+0

또한 가져 오기를 통해 모델의 속성에 액세스하는 데 어떻게 도움이됩니까? 내 모델은 특정 유형이고 그 모델의 특정 속성이 필요합니다. – Samo

+0

내 네임 스페이스 및 모델을 사용하여 제안을 시도했지만 여전히 내 모델 또는 해당 속성에 액세스 할 수 없습니다. – Samo

0

ASP.NET MVC는 코드 숨김을 사용하지 않습니다. ASP.NET MVC와 ASP.NET WebForm 페이지를 혼합하는 것처럼 들립니다.

http://www.asp.net/mvc을 살펴 보시기 바랍니다. MVC를 시작하고 작동 방법에 대한 훌륭한 자습서가 있습니다.

+0

이 프로젝트는 수년간 ASP.NET MVC에있었습니다. 프로젝트를 시작할 필요가 없습니다. 감사. – Samo

+0

@Sumo, MVC는 WebForms와 같은 방식으로 ASP.NET의 최상위에서 실행되므로이 ​​두 모델은 사용자가하고있는 것처럼 동일한 프로젝트에서 공존하고 실행할 수 있습니다. 프로젝트를 시작할 필요가 있지만 MVC 작동 방식에 대한 오해가있는 것으로 보일 것을 제안하려고하지는 않았습니다. 이 결론은 MVC의 C 인 컨트롤러가 누락 된 것처럼 보였기 때문에 나왔습니다. –

+0

나는 컨트롤러를 놓치지 않았지만 추측 해 주셔서 감사합니다. 코드의 목적은 모델 유형을 지정하고 도우미 메소드를 추가하는 것입니다. 이보기를 렌더링하는 것은 내 컨트롤러입니다. 어떻게 내가 그 견해에 도달 할 수 있었느냐? 그리고 왜'ViewUserControl'이 MVC와 함께 사용되지 않아야한다면'Sytem.Web.MVC' 클래스입니까? – Samo

관련 문제