2010-12-17 3 views
1

수년간 Web Forms 개발을 마친 후 MVC를 사용하기로 결정했습니다. 나는 다른 걸림돌의 대부분을 통해 일할 수 있었지만, 나는이 일에 매달려있다.ASP.Net MVC 3 RC2, 부분 뷰 양식 처리

Web Forms에서는 각 양식에 대한 컨트롤을 만들어 모듈화하여 내 사이트 전체에서 다시 사용할 수 있습니다. 나는 MVC에서 같은 일을하려고하지만 부분적인 견해와 많은 행운이 없다. 아마도 단순한 것일 수도 있습니다. 그리고 아마도 올바른 키워드를 찾아서 명백한 예를 찾으려하지 않을 수도 있습니다.

로그인 양식의 강력한 형식의 부분보기를 만들 수 있습니다. 내 사이트의 여러 페이지에 포함시키고 싶습니다. 코드가 뷰와 분리되어 있기 때문에 논리를 캡슐화하여 여러 뷰에서 쉽게 재사용 할 수있는 방법은 무엇입니까? Web Forms에서는 코드 숨김으로 붙였습니다. MVC에서 컨트롤을 사용할 모든 뷰 컨트롤러에 코드를 넣어야합니까?

둘째, 부분보기에서 게시물을 어떻게 처리합니까? 강력하게 형식화 된 뷰와 부분 뷰를 만들려고했으나 폼이 뷰에 직접있을 때 뷰 모델이 자동으로 채워지는 것처럼 보이지 않습니다. 나는 항상 액션 매개 변수로 FormCollection을 사용할 수 있으며, 부분 뷰 모델에 값을 넣지 만 너무 우아하지는 않습니다. 한 사람이 여러 개의 강력한 형식의 부분 페이지를 단일보기의 양식 (예 : 로그인 컨트롤과 레지스터 컨트롤이있는 로그인 페이지)으로 사용하는 방법에 대한 몇 가지 기능적 예제를 가르쳐 주시겠습니까?

답변

2

MVC에서는 보기 (보기 비트 제외).
예를 들어 Fabrikam Shipping을 살펴 보시기 바랍니다.

보기 드라이를 유지하려면 부분 및 편집 /보기 템플리트를 사용할 수 있습니다. 양식의 일부를 제출하려면 - 당신이 jQuery를 AJAX (Hijax)를 사용할 수 있습니다 :

@using (Html.BeginForm("Action","Controller",FormMethod.Post,new{id="Form"})) 
0
: 다른 행동 또는 컨트롤러에 전체 양식을 제출하고자하는 경우에도

$("#someForm").submit(function() { 
      $.post($(this).attr("action"), $(this).serialize(), 
        function (response) { 
         $("#someContainer").append(response); 
        }); 
      return false; 
     }); 

를, 다음과 같이 사용할 수 있습니다 Views\Helpers 폴더에

장소이 :

@helper LoginControl() { 
    @using (Html.BeginForm("Login","Home")) { 

    } 
} 

그리고 귀하의 의견이를 사용하거나 마스터 :

<div> 
    @LoginControl() 
</div> 
이제 단순히 우리는 MVC3에서 면도기 도우미에 대한 정말 깨끗한 해결책이없는 당신의 HomeController

public ActionResult Login(LoginModel model) 
{ 
} 
+0

당신은'Views \ Helpers'가 확실한가요? 마지막으로 ASP.NET MVC 팀과 함께이 기능을 확인했지만 Scott Gud가 블로그에 광고했지만이 기능은 구현되지 않습니다. –

+0

ooh. 그걸 몰랐어. 방금 블로그에서 기억했습니다. – jgauffin

+0

HTML 도우미를 만드는 것이 건조한 상태로 유지하는 방법이라고 생각합니다. – jgauffin

0

이를 추가 할 수 있습니다. 일반 웹 사이트에서는 CSHTML 또는 VBHTML 파일을 App_Code에 넣은 다음 jgauffin suggesting 구문을 사용할 수 있습니다. 불행하게도 우리는 v1 (우리는 v2를 조사 중입니다)에서 극복 할 수 없었던 컴파일 시스템의 제한으로 인해 ~/Views/Helpers 모델을 구현할 수 없었습니다.

ASP.Net 팀의 설계자 인 David Ebbo는 Visual Studio 코드 생성기를 사용하는 솔루션을 제안 했으므로 도우미를 모든 DLL (정규 클래스 라이브러리조차)로 컴파일 할 수 있습니다 : http://blogs.msdn.com/b/davidebb/archive/2010/10/27/turn-your-razor-helpers-into-reusable-libraries.aspx. I 높게 체크 아웃 하시길 권합니다.

관련 문제