2012-07-08 3 views
2

내가 현재 가지고 :엔티티 모델 유효성 검사를 더 효과적으로 활용하려면 어떻게해야합니까?

@Html.EditorFor(model => model.PurchasePrice) 
나는 (분명히 가격 입력) 소수점에 의해 분리 된 2 개 개의 별도 필드로이 분할 싶습니다

. 그러나 기본 텍스트 상자를 사용하면 ASP.NET의 유효성 검사 기능을 사용할 수있는 기능이 느슨해집니다.

Razor 또는 속성을 사용하여 내 Entity 모델에 대한 JS 및 서버 측 유효성 검사를 유지할 수있는 방법이 있습니까?

viewmodel 내 자신의 기능을 만들어 다른 곳에서 쉽게 할 수 있지만 MVC3을 처음 접했을 때 그 경로가 가장 좋거나 간단한 방법이 있는지 확실하지 않습니다.

편집 :

이 나는, 나는 완전히이 어떻게 작동하는지 이해하지 생각하고 방향의 일종이다.

ppDollar과 1을 각각 ppCents으로 설정합니다. 내가 가지고있는 컨트롤러에서 :

modelname.PurchasePrice = Request["ppDollar"] + Request["ppCent"]; 

그러나 나는 그것을 보면서 작동하지 않을 것이라고 말할 수 있습니다. 그래서 질문은 실제로 엔티티 모델에 대해 사용자 입력의 유효성을 검사하는 방법이며 내장 된 기능을 더 잘 활용할 수있는 방법이라고 생각합니다.

+1

그래서 두 개의 텍스트 bosex를 하나의 숫자로 만들고 다른 하나는 십진수로 사용하고 싶습니다. 그러나 클라이언트 측에서 아마도 jquey를 사용하는 것이 좋습니다. 모델에서 유효성을 검사하지만 별도의 모델이나 html 도우미를 작성하는 번거 로움을 피할 필요가 없으며 jquery로 유효성을 검사 할 수 있습니다. –

답변

1

EditorFor으로 렌더링되는 특정 유형의 사용자 정의 편집기를 만들 수 있습니다. 온라인으로하는 방법에 대한 많은 예제를 찾을 수 있습니다. 대부분 사용자 정의 DateTime 편집기에 초점을 맞추지 만 동일한 아이디어가 모든 유형에 적용됩니다. 빠른 검색에서 단지 하나의 예 : 한마디로

http://buildstarted.com/2010/09/10/overriding-displayfor-and-editorfor-to-create-custom-outputs-for-mvc/

, 프로세스는 다음과 같습니다

  • 은 (유형으로 같은 이름의 Views\Shared\EditorTemplates 폴더에 저장 부분 뷰 템플릿을 작성, 예 : Decimal.cshtml).
  • 뷰는 표시 할 모델을 모델로 사용해야합니다. @inherits System.Web.Mvc.WebViewPage<System.Decimal>
  • 일부 필드 명명 규칙을 사용하여 원하는대로보기가 표시되도록합니다.
  • ViewData.ModelMetadata.AdditionalValues 속성을 통해 템플릿에서 참조되는 적절한 EditorFor 오버로드를 통해 HTML 속성을 전달할 수도 있습니다.

한 가지주의해야 할 : 당신이 EditorFor모든 전화에 사용되는 에디터 템플릿을 정의하면. EditorTemplates 폴더를 공유 된 폴더 대신 적절한보기 하위 폴더로 이동하여 특정 컨트롤러로 범위를 지정할 수 있습니다.

관련 문제