2012-10-23 3 views
0

사용자의 일부 데이터가 필요한 MVC 3 응용 프로그램을 만들고 있습니다. 그런 다음 데이터가 외부 DLL로 전송됩니다 (변경할 수 없음). 전송은 객체가 뷰에 대한 내 모델이 될 수 있도록 객체를 함수에 전달하여 수행됩니다.MVC 3 사용자 지정 유효성 검사

문제는 내가 모델에 속성을 추가 할 수있는 권한이없고 메타 데이터 클래스를 추가 할 대상이 없다는 것입니다. 나는 JQuery와-1.8.2, jquery.validate와 jquery.validate.unobtrusive 만 포함 시켰습니다

@helper TextBox(string name, object value = null) 
    { 
     var val = value ?? ""; 
    <tr> 
     <td class="label">@name : 
     </td> 
     <td> 
      <input type="text" name="@name" id="@name" value="@val" /> 
     </td> 
    </tr> 
} 

@helper ValidationMessage(string name) 
    {<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="@name"></span>} 

@helper TextBoxRequired(string text, string fildName, object value = null, string message = "*") 
    { 
     var val = value ?? ""; 
    <tr> 
     <td class="label">@text :</td> 
     <td> 
      <input type="text" name="@fildName" id="@fildName" value="@val" data-val="true" data-val-required="@message" /> 
      @ValidationMessage(fildName)</td> 
    </tr> 
} 

:

나는 그래서이 같은 도우미 함수를 만든 jQuery를 사용하여 사용자 정의 검증 메커니즘을 사용하기로 결정 작동 안됨.

도움을 주시면 감사하겠습니다.

편집 : 웹 설정 설정 :

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 

그리고 활성화 자바 스크립트 테스트를 위해 파이어 폭스, 크롬과 IE를 사용하고 있습니다.

+0

이 활성화나요 : 클라이언트 측 유효성 검사를위한 방법으로

는 주문 적어도 다음과 같은 3 참조를 필요로 작동합니다 web.config의 유효성 검사 (AppSettings에서'ClientValidationEnabled'와'UnobtrusiveJavaScriptEnabled'를 true로 설정) 또는'HtmlHelper'에서 정적 속성과 동일한 키 이름을 사용하는 코드를 통해? –

+0

예. 죄송합니다. 추가하지 않으 셨습니다. value = "true"/>

답변

2

보기 모델을 사용하는 것이 좋습니다. 자신의 어셈블리에서 변경할 수없는 도메인 모델을 그대로 둡니다. 그런 다음 컨트롤러가 뷰 모델을 뷰에서 가져 오거나 통과하도록하십시오. 이러한 뷰 모델은 주어진 뷰의 요구 사항에 대해 특별히 정의한 클래스입니다. 뷰 모델 특성은 필요한 모든 유효성 검증 데이터 주석으로 장식 될 수 있습니다.

그런 다음보기에 Html.TextBoxForHtml.ValidationMessageFor과 같은 표준 입력기와 강하게 입력 된 도우미를 사용하고 일부 도우미에서 바퀴를 다시 열지 마십시오.

  1. jquery
  2. jquery.validate
  3. jquery.validate.unobtrusive
관련 문제