ASP.NET MVC 2.0 中 jQuery数据验证的同步总结
应该有很多人和我一样,一想起jQuery中的Ajax(不只是jQuery中),就想到了异步.
的确,Ajax的价值就在于它的异步上,这也是他存在的理由。但在真正的使用中,还要注意同异步使用的差异性和使用场合。
现在在做的一个教师管理系统有这个一个名称重复的验证。一开始就是盲目的异步验证(主要罪因在于对异步机制的生疏)。
javascript代码
<script type="text/javascript">
$(document).ready(function() {
//验证名称是否为空
$("#edit_submit").click(function() {
var id = $("#edit_id").val(); //编号
var name = $.trim($("#edit_title_name").val()); //职称名字
var name_error = $("span.edit").eq(0); //职称名字错误域
if (name == "") {
name_error.html("不能为空");
return false;
} else {
if (UptNameExist(id, name)) {
name_error.html("已存在");
return false;
}
return true;
}
});
//修改后的双师名称是否在数据库中存在
function UptNameExist(id, name) {
var exist = false;
$.ajax({
type: "GET",
async: false,
url: "/DoubleCompetency/UptNameIsExist",
data: { id:id, name:name },
success: function(data) {
if (data == "True") {
exist = true;
}
}
});
return exist;
}
})
</script>
视图代码
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<table class="basic_lines">
<caption>修改双师类别</caption>
<tr>
<td style="width: 100px">职称名称</td>
<td style="width: 160px">
<%=Html.TextBox("edit_title_name")%>
</td>
<td style="width: 100px"><span class="edit error"></span></td>
</tr>
<tr>
<td>状态</td>
<td>
<%=Html.RadioButton("edit_status", "1", false) %>正常
<%=Html.RadioButton("edit_status", "0", false) %>禁止
</td>
<td><span class="edit error"></span></td>
</tr>
<tr>
<%=Html.Hidden("edit_id") %>
<%=Html.Hidden("page", ViewData["current_page"]) %>
<td colspan="3"><input type="submit" id="edit_submit" name="edit_submit" value="提交" /></td>
</tr>
</table>
控制器代码
/// <summary>
/// 修改后的双师名称是否在数据库中存在(前台调用)
/// </summary>
/// <param name="id">编号</param>
/// <param name="name">职称名称</param>
/// <returns></returns>
public bool UptNameIsExist(int id, string name)
{
DoubleCompetency doubleCompetency = new DoubleCompetency();
doubleCompetency.ID = id;
doubleCompetency.Name = name;
if (doubleCompetencyConcrete.UptNameIsExist(doubleCompetency))
{
return true;
}
return false;
}