MVC 프로젝트의 코드 비유에서 서버 측 제어에 액세스하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1014987

문제

가장 먼저, 내 견해에서 서버 측 제어에 액세스하는 것이 MVC에서 눈살을 찌푸 렸음을 알 수 있습니다. 그러나 나는 내 상황에 있어야한다 (내가 볼 수있는 한). 여기 내 이야기가 있습니다. :)

웹 애플리케이션에서 사용하는 타사 컨트롤이 있습니다. 현재 WebForms 솔루션을 MVC로 포트하는 작업을 받았습니다. 이 특정 타사 웹 컨트롤에는 WebForms 아키텍처가 필요하므로 WebForms 프로젝트에서 동일한 코드를 사용하려고합니다.

나의 초기 접근 두 개의 웹 사이트 (WebForms 사이트 및 MVC 사이트)가있는 다음 MVC 측에서 Iframes를 사용하여 두 개의 웹 사이트를 연결하는 것이 었습니다. 그것이 효과가 있다는 것을 알고 있지만,이 특정 제어를 사용하는 것은 약간의 과장이었습니다. 더 많은 연구를 한 후에, i 발견 "소년을 혼합"하고 MVC 프로젝트 내에서 웹 포름 아키텍처를 사용할 수 있습니다. 따라서 내가 취한 새로운 접근법은 이 제 3 자 컨트롤을 사용하는 페이지를 특정 디렉토리 (예 : 'view somedir webforms')로 복사 한 다음 mvc 라우팅 시스템이 선택하지 않도록 내 Global.asax 파일의 디렉토리를 무시하십시오.

routes.IgnoreRoute("View\SomeDir\WebForms\{*pathInfo}");

불행히도 ASPX 페이지를 MVC 프로젝트에 복사했을 때 CodeBehind가 페이지의 제어에 대한 액세스 권한을 부여하지 않는다는 것을 알게되었습니다. 상황이 설정되는 방법은 다음과 같습니다.

<%@ Register 
  Assembly="..." 
  Namespace="..." 
  TagPrefix="custom" %>

<custom:SomeControl ID="customControl" runat="server" />

다음은 다음과 같습니다.

public class MyPage : Page
{
  protected void Page_Load(object sender, EventArgs args)
  {
     Debug.WriteLine(customControl.ID); // <-- COMPILE ERROR: Cannot resolve symbol 'customControl'
  }
}

불행히도 내 코드의 모든 컨트롤 에서이 오류가 발생하기 때문에 내 프로젝트는 컴파일되지 않습니다. 다른 컨트롤 (예 : 레이블, 패널, 텍스트 상자 등)을 클라이언트 태그로 변환하는 것은 문제가되지 않지만 내 코드 에서이 사용자 정의 컨트롤에 액세스 할 수 있도록 (Server-Side를들을 수 있도록해야합니다. ) 이벤트 및 그에 따라 응답; 기본 웹 폼 스팅 ...

내가하려는 일이 가능합니까? 내가 그것에 대해 생각한 또 다른 접근법 might 작업은 컨트롤러 클래스에서 서버 측 이벤트를 초기화하고 덫을 놓는 것입니다. 그러나 뷰에서 컨트롤 상태를 직렬화하지 않고 단순히 컨트롤러로 전달하고 가능하면 다시 전달하고 싶습니까?

조언에 미리 감사드립니다!

도움이 되었습니까?

해결책

이런 세상에!! 이것을 게시 한 후 10 분 후에 솔루션을 찾았습니다.

수정 사항은 내 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "웹 응용 프로그램으로 변환"하고 CodeBehind 클래스를 '부분'으로 다시 변경하는 것이 었습니다. 내 모든 컨트롤은 이제 뒤의 코드를 통해 액세스 할 수 있습니다.

읽어 주셔서 감사합니다. 제 질문/답변이 언젠가 다른 사람에게 도움이되기를 바랍니다. :)

다른 팁

나는 전통적인 웹 포름에 절반을 유지하기 위해 MVC에 무언가를 포팅하는 요점을 보지 못합니다.

이 접근법은 미래의 개발자가 두 기술에 익숙해야하며 제 생각에는 깨끗하지 않다는 것을 의미합니다.

나는 하나 또는 다른 하나와 함께 가서 두 가지를 섞지 않으려 고 노력할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top