2009-07-07 3 views
2

WebForms 3.5 응용 프로그램에서 컨트롤의 코드 숨김을 없애기 위해 찾고 있습니다. 이것은 나에게 당신이 기대하는 파서 오류를 제공WebForms 3.5에서 강력하게 형식화 된 ASCX?

<%@ Control Language="C#" Inherits="Core.DataTemplate<Models.NewsArticle>" %> 

, 그래서 나는 다시 기억 : 다시는 MVC에서 어떻게하는지의 벌레에 물린, 나는 수행하여 가까운이 방법에 대한 단계를 좀하고 싶습니다 이것은 MVC 미리보기에서 수정을 기다리는 문제, 그리고 그것을 변경하는 경우 :

<%@ Control Language="C#" Inherits="Core.DataTemplate`1[[Models.NewsArticle]]" %> 

하지만이 중 하나가 작동하지 않습니다! MVC 팀이이 기능을 어떻게 활용할 수 있었습니까? 최신 VS2008 서비스 팩보다는 MVC 프로젝트 유형에 특별한 것이 있습니까?

코드 숨김 파일을 포기하고 앞으로 템플릿을 요구하는 것보다는 가능한 한 일반 사용자 제어 방법에 가깝게 설정하는 최선의 방법은 무엇입니까?

+0

웹 양식을 굽히는 것처럼 들립니다. 개인적으로 웹 양식을 할 때, 필자는 파일 양식의 코드를 사용하여 웹 양식을 작성합니다. ASP.NET MVC를 수행 할 때 MVC 방식으로 처리합니다. 하나를 다른쪽으로 구부려는 것은 문제를 요구하고 있습니다. – RichardOD

+0

WebForms를 구부리기 위해 노력하고 있지만 불필요한 파일을 제거 할 수 있다면 너무 많이 요청할 것이라고 생각하지 않습니다. 특히 필자가 완벽하게 어울리는 매우 유사한 컨텍스트에서 작업하는 구문을 이미 접했을 때는 사용할 수 없다는 사실에 좌절감을 느낍니다. – tags2k

답변

4

글쎄, 내가 해낸 것처럼 보입니다. ViewUserControl<T>에 대한 MVC 팀에서 구현 한 PageParserFilter를 살펴본 결과, 내 자신의 DataTemplate<T> 목적으로 비슷한 것을 만들 수있었습니다. 단. 이제 다음 줄을 사용할 수 있습니다.

<%@ Control Language="C#" Inherits="Core.DataTemplate<Models.NewsArticle>" %> 

그리고 코드 숨김없이 구문 분석을 수행 할 수 있습니다. 나는 그 과정에서 다른 것을 깨뜨린 것을 발견하면 다시보고 할 것입니다!

0

WebForms를 사용하면 코드 숨김없이 유용하게 만드는 모든 것을 잃게됩니다. 그러면 VS가 모든 runat="server" 컨트롤에 대한 실제 정의를 포함하는 디자이너 파일을 자동으로 생성 할 수 없기 때문입니다. 당신이 할 수있는 일

공통 기본 페이지 클래스를 가지고 있고, 만들입니다 일반 : 또한 당신을 허용하면서

public class DataTemplate<T> : Page { 
    public T Model {get;set;} 
} 

public partial class MyCodeBehindClass : 
    DataTemplate<Models.NewsArticle> { 
    ... 
} 

이것은, 웹폼은 방해받지 않고 작업을 수행하는 모든 드래그 앤 드롭 구성 요소 물건을 허용 것 페이지에서 강력한 형식의 모델에 액세스하십시오.

<%@ Control Language="C#" Inherits="MyCodeBehindClass" %> 

<% foreach(var item in Model) { %> 
    <!-- do stuff --> 
<% } %> 
+0

아, 미안 해요, 내 질문에 아마 이것에 대한 명확하지 않았다,하지만 난 이미 DataTemplate : 사용자 정의 ASCX 내에서 사용하려고 UserControl 클래스, 그리고 부분 클래스를 사용하지 마십시오. – tags2k

+0

아, 그렇다면 왜 WebForms를 유지해야할까요? 왜 부분 클래스를 생성하지 않고 WebForms 컴포넌트를 사용할 수 없으므로 MVC를 사용하지 않으시겠습니까? – Keith

+0

이것은 가능한 한 많이 정리하려고하는 기존 WebForms 응용 프로그램이므로 전체 아키텍처를 변경할 수 없습니다. 프론트 엔드 세대의 대부분은 추상화되어 있으므로 유지 보수에 대해 걱정할 필요가있는 것은 MasterPages와 필요한 경우이 템플릿이며 WebForms 비트가 필요하지 않습니다. – tags2k