本文实例为大家分享了MVC+jQuery.Ajax异步实现增删改查和分页的具体代码,供大家参考,具体内容如下
1、Model层代码
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Collections.Generic; using MvcExamples; using System.Web.Mvc; namespace MvcExamples.Web.Models { public class StudentModels { /// <summary> /// 获取学生信息列表 /// </summary> public List<MvcExamples.Model.Student> StudentList { get; set; } /// <summary> /// 获取教工信息列表 /// </summary> public List<MvcExamples.Model.Teacher> TeacherList { get; set; } /// <summary> /// 获取学生信息列表(分页) /// </summary> public PagedList<MvcExamples.Model.Student> GetStudentList { get; set; } } }
2、View层代码
<%@ Page Title=\"\" Language=\"C#\" MasterPageFile=\"~/Views/Shared/Site.Master\" Inherits=\"System.Web.Mvc.ViewPage<MvcExamples.Web.Models.StudentModels>\" %> <asp:Content ID=\"Content1\" ContentPlaceHolderID=\"TitleContent\" runat=\"server\"> Index </asp:Content> <asp:Content ID=\"Content3\" ContentPlaceHolderID=\"HeadContent\" runat=\"server\"> <script src=\"http://www.cnblogs.com/Scripts/jquery-1.4.2.min.js\" type=\"text/javascript\"></script> <script src=\"http://www.cnblogs.com/Scripts/My97DatePicker/WdatePicker.js\" type=\"text/javascript\"></script> <script src=\"http://www.cnblogs.com/Scripts/windwUi/jquery-ui-1.8.1.min.js\" type=\"text/javascript\"></script> <link href=\"http://www.cnblogs.com/Scripts/windwUi/jquery-ui-1.8.1.custom.css\" rel=\"stylesheet\" type=\"text/css\" /> <script type=\"text/javascript\"> $(function(){ //添加学生信息 $(\'#a_add\').click(function(){ $(\'#window\').dialog({ title: \"添加学生信息\", width: 300, height: 200, modal: true, buttons: { \"取消\": function() { $(this).dialog(\"close\"); //当点击取消按钮时,关闭窗口 }, \"添加\": function() { //当点击添加按钮时,获取各参数的值 var sno=$(\'#sno\').val(); var sname=$(\'#sname\').val(); var ssex=$(\'#ssex\').val(); var sbirsthday=$(\'#sbirthday\').val(); var sclass=$(\'#sclass\').val(); $.ajax({ type:\'post\', url:\'/Student/AddStudent\',//路径为添加方法 data:\'no=\'+sno+\'&name=\'+sname+\'&sex=\'+ssex+\'&birsthday=\'+sbirsthday+\'&sclass=\'+sclass,//参数的个数和名字要和方法的名字保持一致 success:function(json)//返回的是Json类型的 { $(\'#window\').dialog(\"close\"); //判断是否成功 if(json.result==\"true\") { $(\'#btn_close\').click(); alert(\'恭喜你,修改成功!\'); }else{ alert(\'抱歉,修改失败!\'); } } }); } } }); }) //删除学生信息 $(\'.a_delete\').click(function(){ //确认是否删除 if(confirm(\"是否删除此条信息?\")) { $.ajax({ type:\'post\', url:\'/Student/DeleteStudent\', data:\'no=\'+$(this).attr(\"sno\"),//获取当前对象的属性(自定义属性)sno的值,用自定义属性保存相应需要的数据 sucess:function(json) { if(json.result==\"true\") { alert(\"恭喜你,已成功删除!\"); }else { alert(\"抱歉,删除失败!\"); } } }) } }) //修改学生信息 $(\'.a_update\').click(function(){ var student=$(this); $(\"#sno\").attr(\"value\",student.attr(\"sno\")); $(\"#sname\").attr(\"value\",student.attr(\"sname\")); $(\"#ssex\").attr(\"value\",student.attr(\"ssex\")); $(\"#sbirthday\").attr(\"value\",student.attr(\"sbirthday\")); $(\"#sclass\").attr(\"value\",student.attr(\"sclass\")); $(\'#window\').dialog({ title: \"修改学生信息\", width: 300, height: 200, modal: true, buttons: { \"取消\": function() { $(this).dialog(\"close\"); }, \"修改\": function() { var sno=$(\'#sno\').val(); var sname=$(\'#sname\').val(); var ssex=$(\'#ssex\').val(); var sbirsthday=$(\'#sbirthday\').val(); var sclass=$(\'#sclass\').val(); $.ajax({ type:\'post\', url:\'/Student/UpdateStudent\', data:\'no=\'+sno+\'&name=\'+sname+\'&sex=\'+ssex+\'&birsthday=\'+sbirsthday+\'&sclass=\'+sclass, success:function(json) { $(\'#window\').dialog(\"close\"); if(json.result==\"true\") { $(\'#btn_close\').click(); alert(\'恭喜你,修改成功!\'); }else{ alert(\'抱歉,修改失败!\'); } } }); } } }); }); }) </script> </asp:Content> <asp:Content ID=\"Content2\" ContentPlaceHolderID=\"MainContent\" runat=\"server\"> <h2> MVC 演示</h2> <table> <thead> <tr> <td> 学生表 </td> </tr> <tr> <td> 学号 </td> <td> 姓名 </td> <td> 性别 </td> <td> 生日 </td> <td> 班级 </td> <td> 操作 </td> </tr> </thead> <tbody> <%foreach (MvcExamples.Model.Student student in Model.GetStudentList) {%> <tr> <td> <%=student.sno %> </td> <td> <%=student.sname %> </td> <td> <%=student.ssex %> </td> <td> <%=student.sbirthday %> </td> <td> <%=student.sclass %> </td> <td> <a href=\"javascript:void(0);\" class=\"a_update\" sno=\"<%=student.sno %>\" sname=\"<%=student.sname %>\" ssex=\"<%=student.ssex %>\" sbirthday=\"<%=student.sbirthday %>\" sclass=\"<%=student.sclass %>\">修改</a> <a href=\"javascript:void(0);\" class=\"a_delete\" sno=\"<%=student.sno %>\">删除</a> </td> </tr> <% } %> </tbody> <tfoot> <tr> <td> 全选 </td> <td colspan=\"5\" style=\"text-align: right;\"> <a href=\"javascript:void(0);\" id=\"a_add\">添加</a> </td> </tr> </tfoot> </table> <%=Html.MikePager(Model.GetStudentList)%> <br /> <table> <thead> <tr> <td> 学生表 </td> </tr> <tr> <td> 学号 </td> <td> 姓名 </td> <td> 性别 </td> <td> 生日 </td> <td> 班级 </td> </tr> </thead> <tbody> <%foreach (MvcExamples.Model.Student student in Model.StudentList) {%> <tr> <td> <%=student.sno %> </td> <td> <%=student.sname %> </td> <td> <%=student.ssex %> </td> <td> <%=student.sbirthday %> </td> <td> <%=student.sclass %> </td> </tr> <% } %> </tbody> </table> <br /> <table> <thead> <tr> <td> 老师表 </td> </tr> <tr> <td> 编号 </td> <td> 姓名 </td> <td> 性别 </td> <td> 生日 </td> <td> 职称 </td> <td> 所在部门 </td> </tr> </thead> <tbody> <%foreach (MvcExamples.Model.Teacher teacher in Model.TeacherList) {%> <tr> <td> <%=teacher.tno%> </td> <td> <%=teacher.tname%> </td> <td> <%=teacher.tsex%> </td> <td> <%=teacher.tbirthday%> </td> <td> <%=teacher.prof%> </td> <td> <%=teacher.depart%> </td> </tr> <% } %> </tbody> </table> <div id=\"window\" style=\"display:none;\"> <input type=\"hidden\" id=\"sno\" name=\"sno\" value=\"\" /> 姓名:<input type=\"text\" id=\"sname\" name=\"sname\" /><br /> 性别:<input type=\"text\" id=\"ssex\" name=\"ssex\" /><br /> 生日:<input type=\"text\" id=\"sbirthday\" name=\"sbirthday\" onClick = \"WdatePicker()\" /><br /> 班级:<input type=\"text\" id=\"sclass\" name=\"sclass\" /><br /> </div> </asp:Content>
3、Controller层代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Ajax; namespace MvcExamples.Web.Controllers { public class StudentController : Controller { // // GET: /Student/ MvcExamples.BLL.Student _Student = new MvcExamples.BLL.Student(); MvcExamples.BLL.Teacher _Teacher = new MvcExamples.BLL.Teacher(); /// <summary> /// 演示 /// </summary> /// <param name=\"pi\"></param> /// <param name=\"sclass\"></param> /// <returns></returns> public ActionResult Index(int? pi, string sclass) { int PageIndex = pi ?? 1; int PageSize = 5; string sClass = sclass == null ? \"95031\" : sclass; MvcExamples.Web.Models.StudentModels _StudentModels = new MvcExamples.Web.Models.StudentModels(); _StudentModels.StudentList = _Student.GetModelList(\"sclass=\" + sClass); _StudentModels.TeacherList = _Teacher.GetModelList(\"tsex=\'男\'\"); _StudentModels.GetStudentList = new PagedList<MvcExamples.Model.Student>(_Student.GetModelList(\"sclass=\" + sClass).AsQueryable(), PageIndex, PageSize); return View(_StudentModels);//返回一个Model } /// <summary> /// 修改学生信息 /// </summary> /// <param name=\"no\"></param> /// <param name=\"name\"></param> /// <param name=\"sex\"></param> /// <param name=\"birsthday\"></param> /// <param name=\"sclass\"></param> /// <returns></returns> public ActionResult UpdateStudent(string no, string name, string sex, string birsthday, string sclass) { MvcExamples.Model.Student _student = new MvcExamples.Model.Student(); _student.sno = no; _student.sname = name; _student.ssex = sex; _student.sbirthday = Convert.ToDateTime(birsthday); _student.sclass = sclass; _Student.Update(_student); JsonResult json = new JsonResult(); json.Data = new { result = \"true\" }; return json; } /// <summary> /// 删除学生信息 /// </summary> /// <param name=\"no\"></param> /// <returns></returns> public ActionResult DeleteStudent(string no) { bool IsDelete= _Student.Delete(no); JsonResult json = new JsonResult(); return json; if (IsDelete) { json.Data = new { result = \"true\" }; } else { json.Data = new { result =\"false\" }; } return json; } /// <summary> /// 添加学生信息 /// </summary> /// <param name=\"no\"></param> /// <param name=\"name\"></param> /// <param name=\"sex\"></param> /// <param name=\"birsthday\"></param> /// <param name=\"sclass\"></param> /// <returns></returns> public ActionResult AddStudent(string no, string name, string sex, string birsthday, string sclass) { MvcExamples.Model.Student _student = new MvcExamples.Model.Student(); _student.sno = no; _student.sname = name; _student.ssex = sex; _student.sbirthday = Convert.ToDateTime(birsthday); _student.sclass = sclass; _Student.Add(_student); JsonResult json = new JsonResult(); json.Data = new { result = \"true\" }; return json; } /// <summary> /// 提供弹出窗口的数据 /// </summary> /// <param name=\"id\"></param> /// <returns></returns> public ActionResult WindowData(int id) { JsonResult json = new JsonResult(); //这里给json数据(这里只是演示,下面数据是模拟的) json.Data = new { name = \"张三\", sex = \"男\" }; return json; } } }
4、两个分页辅助类PagedList和MikePagerHtmlExtensions
PagedList辅助类
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Collections.Generic; using System.Collections.Specialized; namespace System.Web.Mvc { public interface IPagedList { int TotalPage //总页数 { get; } int TotalCount { get; set; } int PageIndex { get; set; } int PageSize { get; set; } bool IsPreviousPage { get; } bool IsNextPage { get; } } public class PagedList<T> : List<T>, IPagedList { public PagedList(IQueryable<T> source, int? index, int? pageSize) { if (index == null) { index = 1; } if (pageSize == null) { pageSize = 10; } this.TotalCount = source.Count(); this.PageSize = pageSize.Value; this.PageIndex = index.Value; this.AddRange(source.Skip((index.Value - 1) * pageSize.Value).Take(pageSize.Value)); } public int TotalPage { get { return (int)System.Math.Ceiling((double)TotalCount / PageSize); } } public int TotalCount { get; set; } /// <summary> /// /// </summary> public int PageIndex { get; set; } public int PageSize { get; set; } public bool IsPreviousPage { get { return (PageIndex > 1); } } public bool IsNextPage { get { return ((PageIndex) * PageSize) < TotalCount; } } } public static class Pagination { public static PagedList<T> ToPagedList<T>(this IOrderedQueryable<T> source, int? index, int? pageSize) { return new PagedList<T>(source, index, pageSize); } public static PagedList<T> ToPagedList<T>(this IOrderedQueryable<T> source, int? index) { return new PagedList<T>(source, index, 10); } public static PagedList<T> ToPagedList<T>(this IQueryable<T> source, int? index, int? pageSize) { return new PagedList<T>(source, index, pageSize); } public static PagedList<T> ToPagedList<T>(this IQueryable<T> source, int? index) { return new PagedList<T>(source, index, 10); } } }
MikePagerHtmlExtensions辅助类
using System; using System.Data; using System.Configuration; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using System.Web.Mvc; using System.Web.Routing; using System.Text; namespace System.Web.Mvc { public static class MikePagerHtmlExtensions { #region MikePager 分页控件 public static string MikePager<T>(this HtmlHelper html, PagedList<T> data) { string actioinName = html.ViewContext.RouteData.GetRequiredString(\"action\"); return MikePager<T>(html, data, actioinName); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, object values) { string actioinName = html.ViewContext.RouteData.GetRequiredString(\"action\"); return MikePager<T>(html, data, actioinName, values); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action) { return MikePager<T>(html, data, action, null); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, object values) { string controllerName = html.ViewContext.RouteData.GetRequiredString(\"controller\"); return MikePager<T>(html, data, action, controllerName, values); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, string controller, object values) { return MikePager<T>(html, data, action, controller, new RouteValueDictionary(values)); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, RouteValueDictionary values) { string actioinName = html.ViewContext.RouteData.GetRequiredString(\"action\"); return MikePager<T>(html, data, actioinName, values); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, RouteValueDictionary values) { string controllerName = html.ViewContext.RouteData.GetRequiredString(\"controller\"); return MikePager<T>(html, data, action, controllerName, values); } public static string MikePager<T>(this HtmlHelper html, PagedList<T> data, string action, string controller, RouteValueDictionary valuedic) { int start = (data.PageIndex - 5) >= 1 ? (data.PageIndex - 5) : 1; int end = (data.TotalPage - start) > 9 ? start + 9 : data.TotalPage; RouteValueDictionary vs = valuedic == null ? new RouteValueDictionary() : valuedic; var builder = new StringBuilder(); builder.AppendFormat(\"<div class=\\\"mike_mvc_pager\\\">\"); if (data.IsPreviousPage) { vs[\"pi\"] = 1; builder.Append(Html.LinkExtensions.ActionLink(html, \"首页\", action, controller, vs, null)); builder.Append(\" \"); vs[\"pi\"] = data.PageIndex - 1; builder.Append(Html.LinkExtensions.ActionLink(html, \"上一页\", action, controller, vs, null)); builder.Append(\" \"); } for (int i = start; i <= end; i++) //前后各显示5个数字页码 { vs[\"pi\"] = i; if (i == data.PageIndex) { builder.Append(\"<font class=\'thispagethis\'>\" + i.ToString() + \"</font> \"); } else { builder.Append(\" \"); builder.Append(Html.LinkExtensions.ActionLink(html, i.ToString(), action, controller, vs, null)); } } if (data.IsNextPage) { builder.Append(\" \"); vs[\"pi\"] = data.PageIndex + 1; builder.Append(Html.LinkExtensions.ActionLink(html, \"下一页\", action, controller, vs, null)); builder.Append(\" \"); vs[\"pi\"] = data.TotalPage; builder.Append(Html.LinkExtensions.ActionLink(html, \"末页\", action, controller, vs, null)); } builder.Append(\" 每页\" + data.PageSize + \"条/共\" + data.TotalCount + \"条 第\" + data.PageIndex + \"页/共\" + data.TotalPage + \"页 </div>\"); return builder.ToString(); } #endregion } }
效果图:
5、源码下砸:jQuery.Ajax异步实现增删改查和分页
以上就是本文的全部内容,希望对大家的学习有所帮助。
本文地址:https://www.stayed.cn/item/15647
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我