2013-08-20 6 views
1

과거에 여러 사용자 정의 서버 컨트롤을 만들었습니다.이 컨트롤은 사용자 컨트롤이 아니므로 사용할 "ascx"파일이 없습니다. 서버 컨트롤을 사용하여 작성한 것과 동일한 종류의 기능을 모방하는 MVC 프로젝트가 제공됩니다. 기본적으로 서버 컨트롤은 복합 컨트롤이므로 텍스트 상자, 레이블, 체크 상자가 몇 개 있으며 여러 개의 JavaScript가 있습니다. 또한이 기능을 몇 가지 웹 서비스에도 바인딩합니다.MVC에 사용자 정의 서버 컨트롤 추가

MVC 페이지에 어딘가에이 컨트롤을 삽입 할 수 있는지 또는 HTML 헬퍼를 사용하여 처음부터이 기능을 다시 빌드해야하는지 궁금합니다. 나는 나중에 생각하고있다.

나는 사용자 정의 html 헬퍼에 관해서는 초보자입니다. 프로그래밍 사용자 정의 html 헬퍼를 프로그래밍 서버 사이드 컨트롤과 동일한 방식으로 처리 할 수 ​​있습니까? 나는 반면, I는 서버 측 컨트롤을 언급 할 때마다 http://msdn.microsoft.com/en-us/library/aa719734(v=vs.71).aspx

, 사람들이 기본 ASP.NET 컨트롤을 가정, 또는 사용자의 컨트롤 :

는, BTW 나는 내가 무슨 말을하는지 보여주기 위해이 예제 URL을 추가 할 필요가 사용자 정의 서버 사이드 컨트롤에 대해 이야기하고 있습니다.

배포가 매우 쉽고 쉽게 다른 .net 프로젝트에 추가되기 때문에 몇 달 전 사용자 지정 서버 제어 방식을 사용했습니다. 그것은 DLL에 모든 것을 래핑하므로, 당신이해야 할 일은 풀을 재활용하는 것입니다. 그러나 그것은 MVC가 말합니다, "아니, 너는 나와 함께 그렇게하지 않을거야".

이 방법에 대한 조언, 팁 또는 링크가 도움이 될 것입니다.

Btw, 그물에서 찾기가 쉬운 경우 여기에 게시하지 않겠습니다. 내가 발견 한 대부분의 예제는 사용자 정의 컨트롤에 대한 내용이 아니라 사용자 컨트롤이나 네이티브 ASP 서버 컨트롤에 대해서만 설명했습니다. 나는이 모든 기능을 다시하고 그 두통을 겪고 싶지 않습니다.

답변

0

MVC에서 ascx 또는 dll 사용자 지정 컨트롤을 사용할 수 없습니다. 주로 ASP.net 컨트롤의 수명이 다르기 때문에 대부분입니다. MVC에서 컨트롤은 HTML 만 렌더링합니다. 포스트 백을받지 못하며 컨트롤 스테이트 또는 viewstate를 저장하지 않습니다. 심지어 "페이지"개체가 MVC에 존재하지 않습니다.

MVC 컨트롤은 매개 변수를 받아들이고 HTML을 렌더링 할 수 있습니다.

+0

실제로 mvc에서 부분 렌더링을 사용하여 ascx를 렌더링 할 수 있습니다. CustomControl1.ascx가있는 경우 "@ Html.Partial ("CustomControl1 ")"또는 "@ {Html.RenderPartial ("CustomControl1 ");}"내가 할 수있는 일의 방향을 기대하고있었습니다. 이 지점에서. 기존 기능을 사용하지 않고 다시 처음부터 다시 작성하는 것은 고통 스럽습니다. – sksallaj

+0

음, 그렇습니다. 당신은 아마 그들을 렌더링 할 수 있습니다. 그러나 ascx 코드 숨김 클래스의 메서드 나 속성에는 액세스 할 수 없습니다. ascx 컨트롤의 기능은 해당 데이터와 ascx 클래스가 해당 데이터로 초기화된다는 사실을 기반으로합니다. 그러나 MVC 데이터는 컨트롤러에 게시됩니다. 모델 바인더를 다루어야합니다. MVC에서 ascx를 재사용하는 방법에 대한 지침이 없다고 생각합니다. – user2626270