2014-02-08 5 views
1

데이터 주석이 포함 된 원격 검증을 사용하여 사용자가 입력 한 사용자 이름이 데이터베이스에 이미 있는지 확인합니다. 내 코드는 다음과 같습니다, 아약스 호출이 사용자 이름을 확인한다 당신이 밖으로 탭 또는이 분야의 HTML 버전의 초점을두고 기본적으로버튼을 클릭 할 때 원격 확인을 실행하는 방법은 무엇입니까?

[Required] 
[Display(Name = "User name")] 
[System.Web.Mvc.Remote("DoesUserNameExist", "Validation", ErrorMessage = "User name already exists, please select a different user name.")] 
public override string UserName { get; set; } 

. 그러나 사용자가 버튼을 클릭 할 때만 확인하고 싶습니다. 이것이 가능한가?

답변

1

내가 그것을 현장 검증 이벤트를 설정하는 매개 변수가없는 원격 메소드 http://jqueryvalidation.org/remote-method이 있고, 눈에 거슬리지 검증 사용 JQuery와 유효성 검사 플러그인, 내가 약간의 트릭을 사용하도록 권장 있기 때문에, 꽤 어려운 것 같아요 당신의 일반 버튼에 버튼을 제출 세트 :

<input type="button" id="your-submit-button" value="send" /> 

나 또한 내가 아마 그것을 내 이전 서버 측 코드가

<button type="button" id="your-submit-button"> 
</button> 


$("#your-submit-button").click(function(event) 
{ 
    event.preventDefault(); 
    if($("#form").valid()) 
    { 
     $.ajax(
      //set option to ajax request validation 
      success:function(valid){ 
       if(valid){ 
        //if ok send data 
        $('#form).submit(); 
       } 
      } 
     ) 
    } 
    return false; 
}) 

또한 당신을 도울 수 :

public class AjaxValidatorController : Controller 
{ 
    // 
    // GET: /AjaxValidator/ 

    public JsonResult ValidateEmail(string email) 
    { 
     // 
     var ValidatorEmail = new UserExistAttribute(); 
     bool ResultEmail = ValidatorEmail.IsValid(email); 
     return Json(ResultEmail, JsonRequestBehavior.AllowGet); 
    } 
} 

public class IsUserExistAttribute : ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     if (Membership.FindUsersByEmail(Convert.ToString(value)).Count == 0) 
     { 
      return false; 
     } 
     return true; 
    } 
} 

public class RecoveryModel 
{ 
    [IsUserExist(ErrorMessage="some message")] 
    ... 
    public string Email { get; set; } 
    ..... 
} 

을 미래에 내가 추천 좀 어려운 validtaion이에 대한 직접 http://jqueryvalidation.org/

+0

감사를 사용하는 경우. 나는 정말로 나에게가는 방향을 준다. 너무 좋지 않은 Remote 속성은 사용할 수있는 일종의 클라이언트 측 이벤트 처리를 제공하지 않습니다. – FrankO

-1

사용자가 버튼을 클릭 할 때만 확인하고 싶습니다. 이것이 가능합니까?

예 가능합니다.

<configuration> 
    <appSettings> 
     <add key="ClientValidationEnabled" value="false"/> 
     <add key="UnobtrusiveJavaScriptEnabled" value="false"/> 
    </appSettings> 
</configuration> 

그리고 또 하나 중요한 점 - 당신의 Web.config에서 비활성화 할 수 있습니다

@{ 
    HtmlHelper.ClientValidationEnabled = false; 
} 

당신이 다음 사용 안 함 유효성 검사를 전역하고 싶다면 - 당신은 특정 뷰에 대한 클라이언트 측 유효성 검사를 비활성화해야 여기 - 원격 인증은 서버 측 유효성 검사를 지원하지 않습니다. 서버 측 유효성 검사를 받으려면이 Nuget from Tugberk Ugurlu을 사용하고 원격 서버 쪽 유효성 검사를 수행하면됩니다.

:

관련 문제