2012-10-31 46 views
0

我有一個窗體用戶名的文本框,當用戶輸入用戶名時,我需要檢查用戶名是否已經在數據庫中。我正在考慮抓住文本框&的模糊事件來編寫一個javascript函數來查詢&簽入數據庫。我正在嘗試這樣的事情:如何檢查mvc 3中的唯一屬性?

@html.textboxfor(x=>x.UserName, new{@id="UserName"}) 

<script type="text/javascript"> 
$(document).ready(function(){$('#UserName').blur("then some code here");}) 

</script> 

現在我需要知道我是否按照正確的方式?如果是這樣,請讓我知道我該如何調用一個將在blur函數中與數據庫交互的操作方法,或者什麼是正確的方法?提前致謝。

回答

0

是的,看起來不錯。您可以使用JQuery Ajax調用,以及Url.Action輔助方法。

$(document).ready(function(){ 
    $('#UserName').blur(function() { 
     var name = this.value; 
     $.get(@Url.Action("VerifyUsername") + "?name=" + value, function(result) { 
      if (result.ok == false) { 
       $("#message").text("Username '" + name + "' is already taken, please try another"); 
      } 
     }); 
    }); 
}); 

這將在當前控制器中調用動作VerifyUsername。它假定動作返回JSON像{ok:true}覈實姓名:

public ActionResult VerifyUsername(string name) 
{ 
    bool isOk; 
    // check the database 
    return new JsonResult() { 
     Data = new { ok: isOk }, 
     JsonRequestBehavior = JsonRequestBehavior.AllowGet 
    }; 
}