ASP.NET2010.02.05 17:06

원문 : http://haacked.com/archive/2010/02/04/aspnetmvc2-rc2.aspx

오늘 오전에 ASP.NET MVC 2 RC 2 가 발표되었습니다.

가장 눈에 띄는점은 유효성 체크 입니다.

ASP.NET MVC 가 처음 나왔을때 제가 느낀 불편한 점이 몇가지 있었는데요, 그 중에 유효성 체크도 있었습니다.
하지만, 이번 RC2 에서 가장 크게 바뀐 부분이고, 지금껏 많은 개발자들이 이부분에 대한 피드백을 주어서 반영된것 같습니다.

기존에는 유효성 검사를 하기위해서는 HttpVerbs.Post 동사 부분에서 If 문으로 처리를 하였죠?
다음처럼 말이죠...
'
' POST: /Product/Create

<AcceptVerbs(HttpVerbs.Post)> _
Public Function Create(<Bind(Exclude:="Id")> ByVal productToCreate As Product) As ActionResult
    ' Validation logic
    If productToCreate.Name.Trim().Length = 0 Then
	    ModelState.AddModelError("Name", "Name is required.")
    End If
    If productToCreate.Description.Trim().Length = 0 Then
	    ModelState.AddModelError("Description", "Description is required.")
    End If
    If productToCreate.UnitsInStock < 0 Then
	    ModelState.AddModelError("UnitsInStock", "Units in stock cannot be less than zero.")
    End If
    If (Not ModelState.IsValid) Then
	    Return View()
    End If

    ' Database logic
    Try
	    _entities.AddToProductSet(productToCreate)
	    _entities.SaveChanges()
	    Return RedirectToAction("Index")
    Catch
	    Return View()
    End Try
End Function

ref : http://www.asp.net/learn/mvc/tutorial-36-vb.aspx

하지만, 이번 RC2 에서는 이 부분이 단순하게 다음처럼 바뀌어버립니다.
'
' POST: /Product/Create

<AcceptVerbs(HttpVerbs.Post)> _
Public Function Create(<Bind(Exclude:="Id")> ByVal productToCreate As Product) As ActionResult
    ' Validation logic
    If ModelState.IsValid Then
	    Return View()
    End If

    ' Database logic
    Try
	    _entities.AddToProductSet(productToCreate)
	    _entities.SaveChanges()
	    Return RedirectToAction("Index")
    Catch
	    Return View()
    End Try
End Function


윗부분에 필드별 조건문은 모두 없어졌습니다.

핵심은 Models 영역의 <Required()> 어노테이션 선언 덕분입니다.
Input Validation vs. Model Validation in ASP.NET MVC

이제 좀 쓸만하겠는데요?

하지만 아직 URL Rewrite, Routing 부분은 좀더 개선이 필요해 보입니다.
Posted by dotnetpower