2009-09-18 2 views
0

WebForms에서 할 수 있었던 MVC로 뭔가를 할 수있는 방법을 찾고 있습니다.asp.net mvc가있는 뷰 페이지에서보기 컨트롤을 동적으로로드 중입니다. 가능한?

데이터를 채우기 위해 사용자가 수행해야하는 단계가 있습니다. 이전의 경우 웹 양식으로 설계된 '광고'사이트에 동물을 등록했습니다. 단순함을 위해 3 페이지가 있다고 말할 수 있습니다. 1 페이지는 드롭 다운 목록에 어떤 유형의 동물을 묻습니다. 이렇게하면 [개, 고양이, 양, 알파카, 말]이 표시됩니다. 페이지를 제출하면 데이터가 저장되고 두 번째 페이지로 전송됩니다. 두 번째 페이지에서 각 동물에 대한 정보를 제출해야합니다. 하나의 큰 페이지를 만들고 해당 동물에 대한 관련 컨트롤을 숨기거나 표시하거나 패널 컨트롤을 사용하여 데이터를 그룹화하는 대신 각 동물에 대한 사용자 컨트롤을 만드는 방법을 선택했습니다. 이 컨트롤은 Load() 및 Save()의 두 가지 메서드가 포함 된 IAnimalTemplate이라는 인터페이스를 상속합니다. 페이지 2에는 자리 표시 자 컨트롤 만 포함됩니다. 그런 다음 동물 유형을 가져 와서 동적으로 usercontrol을 자리 표시 자에로드합니다. IAnimalTemplate의 마술은 데이터를 저장하기 위해 제출 버튼을 클릭했을 때 실제로 적용되었습니다. 제출 단추는 uer 컨트롤 밖에 있었으므로 IAnimalTemplate에 사용자 정의 컨트롤을 캐스팅하고 Save 메서드를 호출 할 수있었습니다. 그것은 훌륭하게 작동했고 다른 동물을위한 수많은 템플릿/사용자 컨트롤을 매우 빠르게 만들고 데이터베이스에 조합을 저장 /로드 할 수있었습니다. 페이지에서 보내기 버튼을 사용하여 사용자 정의 컨트롤의 Save 메서드를 호출 한 다음 페이지에서 처리를 계속하고 페이지 3으로 전송할 수있었습니다.

이제는 MVC와 유사합니다. MVCFutures에서 Html.RenderAction을 살펴본 결과 http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/에있는 PartialRequests를 살펴 보았지만 이러한 작업을 수행 할 지 확실하지 않습니다. 이것들은 모델 데이터가 '(동물) 템플릿'사이에서 변경되기 때문에 이상적인 컨트롤 내에서 뷰 모델을 유지하는 것으로 보이지만 자신의 동작을 호출합니다. 물론 인터페이스에서 정의 할 수있는 Save 메서드를 호출 할 수는 있지만, 일단이 코드가 실행되면 뷰 컨트롤 외부에서 코드를 계속 실행할 수 있는지 확신 할 수 없습니다. 어쩌면 나는 이것에 대해 혼란 스러울 것입니다, 누군가가 솔루션 어딘가에 불을 밝힐 수 있기를 바랍니다. 어떤 아이디어가 필요합니까? 아니면 좀 더 확장해야합니까?

감사 로이드

+2

어쩌면 나이지만, 그런 텍스트의 한 방울을 볼 수 있고 그것을 읽는 데 어려움이있다. 네가 그걸 깰 수 있니, 나도 몰라 ... 단락?! –

+0

'당신이 그것을 깨뜨릴 수있는가요, 나는 모른다 ... 단락?!'. 나는 댄 (Dan)의 풍자에 대한 암시를 감지합니까? – lloydphillips

답변

0

이 새로운 시스템에서 같은 방식으로 문제를 해결하려고하는 것은 좋지 경향이있다. MVC는 ASP.NET과 다르게 작동하므로 MVC를 사용할 때 실제로 MVC 방식으로 문제를 해결해야합니다.

MVC를 사용하여이 작업을 수행하는 것과 비슷한 방법이 있습니다. 당신은 MVC에서 부분적인 것들을 들여다 보았습니다. MVC 사람들은 부분 뷰를 사용합니다. 부분 뷰에 유형에 대한 양식 컨트롤을 넣고 페이지에 렌더링되도록 할 수 있습니다.

MVC는 페이지를 제출할 때 컨트롤을 형식에 매핑하는 작업을 수행하므로 컨트롤러가 저장하려고하는 형식의 개체를 받아 들일 수 있습니다. 저장 버튼을 클릭하면 저장하려고하는 유형의 객체를 수락하는 저장 동작이 호출되며 저장할 수 있습니다.

이 방법은 이전에 ASP.NET Web Forms에서 사용했던 사용자 제어 방식보다 훨씬 쉽습니다.

+0

응답 해 주셔서 감사합니다. 귀하의 첫 번째 단락에 동의, 나는 솔루션을 이전 방법을 통해 포트하려고하는 대신 MVC 방법을 찾으려고 노력하고 있습니다.내 초기 생각은 유형에 따라 출력을 부분 뷰에서 if 문을 사용하는 것이 었습니다. 그러나 추가 된 유형의 수가 꽤 많아지면 뷰 또는 부분이 꽤 냄새 나는 것으로 끝나고 정직하게 될 것이라고 생각했습니다. 이 경우 뷰에서/스위치 문을 사용하는 것이 가장 좋은 방법인지 모르겠습니다. – lloydphillips

+0

솔루션에 관해서는 조금 이해가되지만 컨트롤러를 객체로 받아들이는 것은 혼란 스럽습니다. 개, 고양이, 양, 말 등을위한 분리 된 부분을 가지고 있다면 주 컨트롤러가 그 많은 동물에 대한 객체 유형을 받아들이도록할까요? 그래서 모델을 특정 부분과 결합 할 수 있고 특정 부분에 대한 작업을 수행 할 수 있기 때문에 부분 요청을 보았습니다. 하지만이 다음 날 부분적으로 외부에서 데이터를 처리하는 문제를 줄 것 같다 (보기 페이지의 컨트롤러에 작업 대신 partial의 작업을 호출 할 것이기 때문에.) 그게 이해가 되길 바래요? – lloydphillips

+0

그래서 본질적으로 Animals/뷰 페이지에서 양/업데이트를 클릭 한 다음 주 컨트롤러에서 일부 작업을 실행하고 싶습니다. 이해가 안되면 알려주십시오. – lloydphillips

관련 문제