2009-03-29 6 views
11

ASP.NET MVC로 수행 할 수없는 작업이 있습니까? ASP.NET WebForms 또는 의 경우에만으로 WebForms을 사용하면 훨씬 쉽습니다.ASP.NET MVC에서 수행 할 수없는 작업

새 프로젝트에 ASP.NET MVC를 사용하는 것이 좋습니다. 그러나 WebForms와 비교할 때 ASP.NET MVC로 수행 할 수없는 명백한 작업이 있는지, 아니면 ASP.NET MVC로 많은 시간을 할애해야하는지 궁금합니다.

답변

14

가장 큰 것은 양식의 기존 타사 컨트롤을 사용하는 것입니다. inbuilt 컨트롤의 대부분은 재현하기 쉽지만, 애완 동물 타사 컨트롤을 사용하는 경우 일반 (비 MVC) aspx 페이지에서 호스트해야 할 수도 있습니다. (불행히도 지원됩니다).

마찬가지로, "웹 파트"는

- ASP.NET 다른 클라이언트 (이동 등)된다 .. 다른 서로 다른 HTML을 사용하는 기능; 당신은 이것을 직접하고 싶지는 않을 것입니다. 그러나 실제로 대부분의 클라이언트는 표준 HTML을 사용하기 때문에 처음에는 문제가 적습니다.

resx 파일을 통한 i18n과 같은 일부 작업은 바닐라 MVC 템플릿보다 많은 작업이 필요하지만 샘플은 인터넷에 있습니다.

원 포인트 ... MVC는 MS/ASP.NET에서만 라이센스가 부여됩니다. 그래서 당신이 할 수없는 한 가지 (조건을 위반하지 않고, 내가 이해하는 것처럼) 모노/아파치 - IANAL에서 그것을 실행하는 것입니다.

지금 바닐라 당신이 할 수없는, 당신은이 MVC로 할 수있는 일을 고려 (또는 어려운) :

  • 경로 대신 페이지
  • 자동 입력 해상도 (액션 인수)
  • 적절한 HTML 컨트롤
  • ...우려 가능 jQuery를 등 간단한 AJAX에 대한
  • 분리
  • 테스트 용이성
  • IOC의/DI
  • 여러 템플릿 옵션 (뿐만 아니라 영문/ASCX) 입력 해상도를 다시

:

public ActionResult Show(string name, int? page, int? pageSize) {...} 

은 "이름", "페이지"및 "페이지 크기 "를 지정하면 요청 값을 선택하는 데 많은 시간을 소비 할 필요가 없습니다.

다시 템플릿 - aspx/ascx 만 템플릿 옵션이 아닙니다. 예를 들어 here; 또는 원하는 경우 직접 작성할 수 있습니다.보기는 ASP.NET 컨트롤 에 전혀 연결되어 있지 않습니다..

+0

좋은 답장을 보내 주셔서 감사합니다. mvc로가는 것이 상대적으로 안전하다는 것을 확신합니다. 그러나 '자동 입력 해상도', 'IoC/DI'및 '여러 가지 템플릿 옵션'을 통해 귀하의 요점을 이해하지 못합니다. 그게 무슨 뜻인지 몇 가지 예를 들어 보셨습니까? –

+0

질문 당 업데이트 –

+0

ASP.Net MVC는 매우 자유로운 라이선스 인 MS-PL의 오픈 소스입니다. http://weblogs.asp.net/scottgu/archive/2009/04/01/asp-net- mvc-1-0.aspx. 모노로 작동하는 것은 완벽하게 합법적입니다. – jeroenh

0

MVC에는 뷰 상태가 존재하지 않는다고 생각합니다. 비 MVC 프로젝트의 빌트인 뷰 상태와 다른 방법으로 자신의 뷰 상태를 추적해야합니다.

편집 : 의견에 따르면 : "ViewState를 제거하는 것이 장점이 아닙니다. 단점은"입니다. - 크레이그

+0

MVC에는 상태를 유지 관리하기 위해 게시물에 유지되는 ViewData 키/값 컬렉션이 있습니다. TempData 컬렉션은 일회성 상태 변경에도 사용됩니다. "이 레코드가 삭제되었습니다." –

+1

ViewState는 WebForms 포스트 백 모델의 일부이며 PHP 또는 Python에서 사용되지 않는 것과 같은 방식으로 MVC에서 사용되지 않습니다. ViewState를 없애는 것이 장점이됩니다. – Craig

+0

+1 for Craig.Viewstate는 가장 평범한 것 중 가장 좋으며, 최악의 상황에서는 완전한 가증 성입니다. 우리가 그걸 없애는 것이 낫다. – Kibbee

1

큰 것은 컨트롤입니다. ASP.NET MVC에서는 사용자 정의 컨트롤을 사용할 수 없습니다. 나는 심지어 이런 식으로 코드를 사용하려고 시도했다.

new Label().RenderControl(...ResponseStream...); 

거푸집이 없다.

물론 그 일부로보기 상태가 필요하지 않으므로 여기에는 없습니다.

서버 컨트롤도 작동합니다.

+0

사실인데 부분적으로 비슷하게 보이는 부분을 사용할 수 있습니다 –

+0

이것은 의도적으로 설계된 것입니다 : MVC 접근 방식은 어떤 마크 업이 렌더링되는지에 대한 단순성과 제어력을 향상 시키려고 시도합니다. –

+0

MVC에는 사용자 정의 컨트롤, WebForms 모델과 함께 사용하도록 설계된 서버 컨트롤은 없습니다. MVC는 시각적 인 드래그 앤 드롭이 아니기 때문에 이벤트 구동 형 개발 서버 컨트롤은 필요하지 않습니다. 그것은 감독이 아니며, 그것은 설계 결정입니다. – Craig

0

Marc에 따르면 타사 도구 및 (서버 측) 웹 컨트롤은 사용할 수 없습니다. 그리드와 데이터 액세스 컨트롤과 같은 폼의 몇 가지 컨트롤을 드래그 앤 드롭하여 신속하게 무언가를 치는 것은 더 이상 선택 사항이 아닙니다.

하지만 코드 생성 등을 사용하면 빠르게 뭔가를 만들 수 있습니다. 그리고 빠른 것을 필요로한다면 위의 옵션을 사용할 수 있습니다.

2

유효성 검사는 WebForms만큼 쉽지 않습니다. Webforms에서 유효성 검사기를 추가하고 clientside 유효성 검사를 가능하게하는 특성을 설정할 수 있습니다. 오류 메시지를 현지화 할 수 있습니다. 현지화는 클라이언트 측 및 서버 측에서 작동합니다.

MVC의 클라이언트 측 유효성 검사는 기본적으로 제공되지 않으므로 클라이언트 측 오류를 현지화하는 방법을 찾아야합니다.

현지화 자체가 다릅니다. 페이지가 없으므로 분명히 기본적으로 페이지 당 Ressources가 존재하지 않습니다. 그러나보기마다 자원을 확보하는 좋은 방법이 있습니다.

폴더별로 SSL 필요를 설정할 수 있는지 여부는 아직 확인하지 않았습니다.

편집

이야기는 MVC3와 다르다. 현재 유효한 유효성 확인 지원이 있습니다.

MVC에는 아직 구현되지 않은 사항이 있습니다. 나를 위해 가장 큰 문제는 도넛 형 현금화 및 부분 현금화를위한 완벽한 구현입니다. 이 영역에서 MVC3의 개선이 있지만 아직 완료되지 않았습니다. 어쨌든 계속 지켜봐주십시오. MVC 팀은이 작업을해야한다는 것을 알고 있습니다.

+1

의견 주셔서 감사합니다. serverside/clientside 검증에 관해서는, 그 솔루션을 제공하는 것 xval (http://xval.codeplex.com) 발견 ... –

+0

유효성 검사는 MVC2 –

+0

에서 훨씬 향상되었습니다 .. 그리고 심지어는 MVC3 –

0

ASP.NET Ajax가 ASP.NET MVC에서 작동하지 않으므로 UpdatePanel이 필요하지 않습니다 (포스트 백이 없어서). 다행스럽게도 기본적으로 Visual Studio 프로젝트 템플릿과 함께 제공되는 jQuery는 물론이고 부분 업데이트를 수행하는 데 사용할 수있는 기본 제공 ajax (Ajax.Form)가 있습니다.

관련 문제