我在表单中有一个用户名的文本框,当用户输入用户名时,我需要检查该用户名是否已经在数据库中。我想抓住文本框的模糊事件&写一个javascript函数来查询&签入数据库。我正在尝试这样的事情:
@html.textboxfor(x=>x.UserName, new{@id="UserName"})
<script type="text/javascript">
$(document).ready(function(){$('#UserName').blur("then some code here");})
</script>
现在我需要知道我是否遵循了正确的方法?如果是这样,那么请让我知道如何调用一个动作方法,该方法将与模糊功能中的数据库进行交互或以正确的方式进行?提前谢谢。
答案 0 :(得分: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
};
}
答案 1 :(得分:0)
您可以在MVC3中使用远程验证 http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx