我會說,你可以使用jquery ajax來完成這項工作。 當文本框焦點丟失時,ajax會調用控制器動作來檢查數據庫,並返回用戶名是否已存在的狀態。
的Jquery:
$(document).ready(function() {
$("#UserName").focusout(function() {
var username = $("#UserName").val();
var fullurl = '/User/UserNameCheck?username=' + username;
if (username.length > 0) {
$.ajax({
url: fullurl,
type: 'GET',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
//data: username,
success: function (data) {
if (data == 'UserNotPresent') {
$("#username_NotPresent_lbl").show();
}
else if (data == 'UserPresent') {
$("#username_Present_lbl").show();
}
else {
$("#failed_check_lbl").show();
}
},
error: function (e) {
$("#failed_check_lbl").show();
}
});
}
});
$("#UserName").focus(function() {
$("#username_NotPresent_lbl").hide();
$("#username_Present_lbl").hide();
$('#failed_check_lbl').hide();
}); });
控制器動作:
[AllowAnonymous]
[HttpGet]
public JsonResult UserNameCheck(string username)
{
Users loggedInUser = db.Users.FirstOrDefault(x => x.UserName == username);
if (loggedInUser != null)
{
return Json("UserPresent", JsonRequestBehavior.AllowGet);
}
else
{
return Json("UserNotPresent", JsonRequestBehavior.AllowGet);
}
}
查看:
<div class="form-group">
@Html.LabelFor(model => model.UserName, new {@class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
@Html.Label("Sorry this user name is already in use", new {id="username_Present_lbl", @class ="ErrorLbl"})
@Html.Label("User name available for use", new {id="username_NotPresent_lbl", @class ="SuccesLbl"})
@Html.Label("Failed to validate the user name", new {id="failed_check_lbl", @class ="FailedCheckLbl"})
</div>
</div>
你怎麼能指望任何人能夠幫助你無需任何代碼審查? MVC是一個服務器端框架,並沒有設置文本框的焦點。這是使用Javascript執行的。 –
我明白約翰,代碼會很簡單,正如我之前所說的,我稱之爲失去焦點事件。我們的新開發人員團隊正在注意新的東西。只是因爲我是新人,所以想要對它有好的想法。 –