使用easyui和ajax在mvc3下碰到的问题

第一次使用easyui配合ajax在.net下的mvc3中做项目,,,我能说我一直被各种人鄙视么???╮(╯_╰)╭,说多了都是泪啊

几乎每一个增删改功能,对我来说,每一步都是新的,一点儿一点儿来,总结:遇到的问题大概有:

  <1>、时间格式化显示   <2>、上传文件  <3>、submit提交表单  <4>、加载表单时的数据绑定  <5>、 True和true在js里的区别  

  <6>、field绑定数据  <7>、json的Data数据的简单操作  <8>、页面返回提示

由于,教师详细信息内容过多,就把详细信息分出来,单独添加,中间牵涉到性别,生日等不同类别的信息的默认选中等,以及文件上传,没少费工夫。

以教师信息管理为例子,总结如下  第一步——>显示列表信息——>添加——>修改——>修改详细——>删除

1、使用easyui显示用户列表,为了让更方便写程序,把js单独拿出来,csthml页面里不再写js,教师信息列表页面如下:

Index.cshtml: 

 1 @{
 2     ViewBag.Title = "教师信息管理";
 3     Layout = "~/Views/Shared/_Layout2.cshtml";
 4 }
 5  <script src="@Url.Content("~/Scripts/BasicSchool_TeacherJS.js")" type="text/javascript"></script>
 6 
 7 <div region="center" style=" 550px; height: 300px; padding: 1px; overflow-y: hidden">
 8     <div id="grid">
 9     </div>
10 </div>
11 <div id="Dlg-Edit" title="窗口" style=" 500px; height: 300px;" buttons="#buttons">
12     <div style="padding: 20px 20px 40px 40px;">
13         <form method="post" id="Form1">
14         <table>
15             <tr>
16                 <td style="text-align: right">
17                     登陆账号:
18                 </td>
19                 <td>
20                     <input type="text" name="userName" id="userName" class="easyui-validatebox" required="true"
21                         style=" 200px;" maxlength="25" />
22                     &nbsp;(限制:50个字节)
23                 </td>
24             </tr>
25             <tr>
26                 <td style="text-align: right">
27                     真实姓名:
28                 </td>
29                 <td>
30                     <input type="text" name="RealName" id="RealName" class="easyui-validatebox" required="true"
31                         style=" 200px;" />
32                 </td>
33             </tr>
34             <tr>
35                 <td style="text-align: right">
36                     密码:
37                 </td>
38                 <td>
39                     <input type="password" name="pwd" id="pwd" class="easyui-validatebox" required="true"
40                         style=" 200px;" />
41                 </td>
42             </tr>
43             <tr>
44                 <td style="text-align: right">
45                     确认密码:
46                 </td>
47                 <td>
48                     <input type="password" name="pwdAgain" id="pwdAgain" class="easyui-validatebox" required="true"
49                         style=" 200px;" />
50                 </td>
51             </tr>
52         </table>
53         </form>
54     </div>
55 </div>
56 <div id="buttons">
57     <a href="javascript:void(0)" class="easyui-linkbutton" iconcls="icon-ok" onclick="saveData()">
58         保存</a> <a href="javascript:void(0)" class="easyui-linkbutton" iconcls="icon-cancel"
59             onclick="javascript:$('#Dlg-Edit').dialog('close')">关闭</a>
60 </div>
61 <div id="search-window" title="搜索教师账号信息" style=" 350px; height: 250px; padding: 10px">
62     <div style="padding: 10px; background: #fff; border: 1px solid #ccc;">
63         <form method="post" id="Form2">
64         <table>
65             <tr>
66                 <td style="text-align: right">
67                     登陆账号:
68                 </td>
69                 <td>
70                     <input name="lName" id="lName" style=" 150px;" />
71                 </td>
72             </tr>
73             <tr>
74                 <td style="text-align: right">
75                     真实姓名:
76                 </td>
77                 <td>
78                     <input name="tName" id="tName" style=" 150px;" />
79                 </td>
80             </tr>
81         </table>
82         </form>
83     </div>
84     <div style="text-align: right; padding: 5px; vertical-align: bottom">
85         <a href="javascript:void(0)" onclick="SearchOK()" id="btn-search" icon="icon-ok">搜索</a>
86         <a href="javascript:void(0)" onclick="closeSearchWindow()" id="btn-search-cancel"
87             icon="icon-cancel">取消</a>
88     </div>
89 </div>
90 
91  <div title="完善教师账号信息" id="Creat_Dialog" style=" 450px; height: 500px;padding: 10px; background: #fff; border: 1px solid #ccc;" />
92   
Index.cshtml

  头部的 <script src="@Url.Content("~/Scripts/BasicSchool_TeacherJS.js")" type="text/javascript"></script>是引入该页面所有的js所在页

  最下面的div 是为了完善用户信息所设置的,存放用户详细信息表单

<div title="完善教师账号信息" id="Creat_Dialog" style=" 450px; height: 500px;padding: 10px; background: #fff; border: 1px solid #ccc;" />

具体的详细信息表单放到另外一个页面里TeacherInfoUpload.cshtml

2、js页面:

  1 // 全局变量
  2 var grid;
  3 var dlg_Edit;
  4 var dlg_Edit_form;
  5 var searchWin;
  6 var searchForm;
  7 var virpath = ""; //网站的虚拟目录 如:/ShopManager
  8 
  9 var detailsWin; //教师详细信息框
 10 var detailsForm;//教师详细信息表单
 11  
 12 
 13 $(function () {
 14 
 15     DataGirdBind(); //加载数据
 16 
 17     dlg_Edit = $('#Dlg-Edit').dialog({
 18         closed: true,
 19         modal: true,
 20         toolbar: [{
 21             text: '保存',
 22             iconCls: 'icon-save',
 23             handler: saveData
 24         }, '-', {
 25             text: '关闭',
 26             iconCls: 'icon-no',
 27             handler: function () {
 28                 dlg_Edit.dialog('close');
 29             }
 30         }]
 31     });
 32 
 33     dlg_Edit_form = dlg_Edit.find('form');
 34 
 35     $('#btn-search,#btn-search-cancel').linkbutton();
 36     searchWin = $('#search-window').window({
 37         iconCls: 'icon-search',
 38         closed: true,
 39         modal: true
 40     });
 41     searchForm = searchWin.find('form');
 42     $('body').layout();
 43 
 44     //初始化表格参数 -=S=-
 45     $('#btn-detail,#btn-detail-cancel').linkbutton();
 46     detailsWin = $('#details').window({
 47         iconCls: 'icon-details',
 48         closed: true,
 49         modal: true
 50     });
 51     detailsForm = detailsWin.find('form');
 52     //   -=E=- 
 53 
 54 });
 55 
 56 //初始化Gird表格
 57 function DataGirdBind() {
 58     grid = $('#grid').datagrid({
 59         title: '管理员列表',
 60         iconCls: 'icon-save',
 61         methord: 'post',
 62         url: '/BasicSchool_TeacherManager/GetList/',
 63         sortName: 'id',
 64         sortOrder: 'desc',
 65         idField: 'id',
 66         pageSize: 20,
 67         striped: true, //奇偶行是否区分
 68         frozenColumns: [[
 69                     { field: 'ck', checkbox: true }
 70                 ]],
 71         columns: [[
 72                     { field: 'id', title: '编号',  20, sortable: true },
 73                     { field: 'userName', title: '教师账号',  50, sortable: true },
 74                     { field: 'RealName', title: '真实姓名',  50, sortable: true },
 75                     { field: 'pwd', title: '密码',  50, sortable: true },
 76                     { field: 'schoolName', title: '学校名称',  50, sortable: true } 
 77                   ]],
 78         fit: true,
 79         pagination: true,
 80         rownumbers: true,
 81         fitColumns: true,
 82         singleSelect: false,
 83         toolbar: [{
 84             text: '新增',
 85             iconCls: 'icon-add',
 86             handler: add
 87         }, '-', {
 88             text: '修改',
 89             iconCls: 'icon-edit',
 90             handler: edit
 91         }, '-', {
 92             text: '完善详细',
 93             iconCls: 'icon-edit',
 94             handler: AddData
 95         }, '-', {
 96             text: '删除',
 97             iconCls: 'icon-remove',
 98             handler: del
 99         }, '-', {
100             text: '高级搜索',
101             iconCls: 'icon-search',
102             handler: OpensearchWin
103         }, '-', {
104             text: '所有',
105             iconCls: 'icon-search',
106             handler: showAll
107         }], onDblClickRow: function (rowIndex, rowData) {  //双击事件
108             dlg_Edit.dialog('open');
109             dlg_Edit_form.form('clear'); //清除之前面选中的表单
110             dlg_Edit.dialog('setTitle', '您正在查看的是:' + rowData.schoolName + "->" + rowData.schoolName);
111 
112             dlg_Edit_form.form('load', rowData); //加载到表单的控件上  
113 
114             dlg_Edit_form.url = virpath + '/BasicSchool_TeacherManager/UpdateSchool?id=' + rowData.id;
115 
116         }, onHeaderContextMenu: function (e, field) {
117             e.preventDefault();
118             if (!$('#tmenu').length) {
119                 createColumnMenu();
120             }
121             $('#tmenu').menu('show', {
122                 left: e.pageX,
123                 top: e.pageY
124             });
125         }
126     });
127 }
128 
129 
130 //打开添加窗口
131 function AddData() { 
132     var rows = grid.datagrid('getSelections');
133     var num = rows.length;
134     if (num == 0) {
135         Msgshow('请选择一条记录进行操作!');
136         return;
137     }
138     else if (num > 1) {
139         Msgfade('您选择了多条记录,只能选择一条记录进行修改!'); //$.messager.alert('提示', '您选择了多条记录,只能选择一条记录进行修改!', 'info');
140         return;
141     }
142 
143     var url_str = '/BasicSchool_TeacherManager/TeacherInfoUpload';
144 
145     $('#Creat_Dialog').load(url_str, function () {
146         $(this).dialog({
147             title: '编辑教师详细信息',
148             modal: true,
149             loadingMessage: '正在加载...',
150             buttons: [{
151                 text: '提交',
152                 iconCls: 'icon-ok',
153                 handler: function () {
154                     $('#FormTeacherInfo').submit();     //提交id为FormTeacherInfo是表单到url_str路径
155                 }
156             }, {
157                 text: '取消',
158                 iconCls: 'icon-cancel',
159                 handler: function () {
160                     $('#Creat_Dialog').dialog('close');
161                 }
162             }]
163         });
164         UserInfoVal();
165     }).show();
166 }
167 
168 
169 //编辑AJAX提交
170 function ajaxAdd() {
171     $('#FormTeacherInfo').ajaxSubmit({
172         url: '/BasicSchool_TeacherManager/TeacherInfoUpload',
173         beforeSubmit: function () {
174             return true;
175         },
176         success: function (data) {
177             if (data == true) {
178                 $('#Creat_Dialog').dialog('close');
179                 $.messager.show({
180                     title: '提示',
181                     msg: '保存成功',
182                     timeout: 2000,
183                     showType: 'slide'
184                 });
185                 DataGirdBind(); //重新加载数据[刷新数据列表]
186             } else {
187                 data
188                 $.messager.show({
189                     title: '提示',
190                     msg: '保存失败:' + data.msg,
191                     timeout: 0,
192                     showType: 'slide'
193                 });
194             }
195         }
196     });
197     return false;
198 }
199 
200 //加载用户数据
201 function UserInfoVal() {
202     var rows = grid.datagrid('getSelections');
203     
204 
205         detailsForm.form('clear');
206         detailsWin.dialog('open');
207         detailsWin.dialog('setTitle', '您正在完善的是:' + rows[0].userName + "->" + rows[0].userName);
208         var idD = rows[0].isDirector; //是否是班主任  
209         if (idD == "True") {
210             $("#isDirector").attr("checked", true);
211         }
212         else {
213             $("#isDirector").attr("checked", false);
214         } 
215         
216         $("#titles").val(rows[0].titles);
217         $("#phone").val(rows[0].phone);
218         $("#uName").val(rows[0].userName); 
219         $("#birthday").val(formatDate('y-m-d', rows[0].birthday));  //格式化输出日期
220 
221         var iSex = rows[0].sex; //性别
222         if (iSex == "True") {
223             $("#rdIsMan").attr("checked", true);
224         }
225         else {
226             $("#rdIsWoman").attr("checked", true);
227         }
228         $("#email").val(rows[0].email);
229         $("#blogUrl").val(rows[0].blogUrl);
230         $("#motto").val(rows[0].motto);
231         var isAct = rows[0].isActivation;   //是否是活跃用户
232         if (isAct == "True") {
233             $("#isActivation").attr("checked", true);
234         } else {
235             $("#isActivation").attr("checked", false);
236         }
237         $("#photoOld").val(rows[0].photo);
238         //用户已经有图片,显示
239         if (rows[0].photo != "") {
240             $("#imgPhoto").attr("src", ".." + rows[0].photo);   
241         }
242     }
243 
244 //格式化时间格式
245 function formatDate(formatStr, fdate) {
246     var fTime, fStr = 'ymdhis';
247     if (!formatStr)
248         formatStr = "y-m-d h:i:s";
249     if (fdate)
250         fTime = new Date(fdate);
251     else
252         fTime = new Date();
253     var formatArr = [
254              fTime.getFullYear().toString(),
255              (fTime.getMonth() + 1).toString(),
256              fTime.getDate().toString(),
257              fTime.getHours().toString(),
258              fTime.getMinutes().toString(),
259              fTime.getSeconds().toString()
260              ]
261     for (var i = 0; i < formatArr.length; i++) {
262         formatStr = formatStr.replace(fStr.charAt(i), formatArr[i]);
263     } 
264     return formatStr;
265 }
266 
267 function createColumnMenu() {
268     var tmenu = $('<div id="tmenu" style="100px;"></div>').appendTo('body');
269     var fields = grid.datagrid('getColumnFields');
270     for (var i = 0; i < fields.length; i++) {
271         $('<div iconCls="icon-ok"/>').html(fields[i]).appendTo(tmenu);
272     }
273     tmenu.menu({
274         onClick: function (item) {
275             if (item.iconCls == 'icon-ok') {
276                 grid.datagrid('hideColumn', item.text);
277                 tmenu.menu('setIcon', {
278                     target: item.target,
279                     iconCls: 'icon-empty'
280                 });
281             } else {
282                 grid.datagrid('showColumn', item.text);
283                 tmenu.menu('setIcon', {
284                     target: item.target,
285                     iconCls: 'icon-ok'
286                 });
287             }
288         }
289     });
290 }
291 
292 function getSelectedArr() {
293     var ids = [];
294     var rows = grid.datagrid('getSelections');
295     for (var i = 0; i < rows.length; i++) {
296         ids.push(rows[i].id);
297     }
298     return ids;
299 }
300 function getSelectedID() {
301     var ids = getSelectedArr();
302     return ids.join(',');
303 }
304 function arr2str(arr) {
305 
306     return arr.join(',');
307 }
308 
309 function add() {
310     dlg_Edit_form.form('clear');
311     dlg_Edit.dialog('open');
312     dlg_Edit.dialog('setTitle', '添加教师');
313     $('#Enable').combobox('setValue', true); //默认设置开启 
314     dlg_Edit_form.url = virpath + '/BasicSchool_TeacherManager/AddSchoolManager/';
315 }
316 function edit() {
317     var rows = grid.datagrid('getSelections');
318     var num = rows.length;
319     if (num == 0) {
320         Msgshow('请选择一条记录进行操作!');
321         return;
322     }
323     else if (num > 1) {
324         Msgfade('您选择了多条记录,只能选择一条记录进行修改!'); //$.messager.alert('提示', '您选择了多条记录,只能选择一条记录进行修改!', 'info');
325         return;
326     }
327     else {
328         dlg_Edit_form.form('clear');
329         dlg_Edit.dialog('open');
330         dlg_Edit.dialog('setTitle', '您正在修改的是:' + rows[0].schoolName + "->" + rows[0].schoolName); 
331         dlg_Edit_form.form('load', rows[0]); //加载到表单的控件上 
332         dlg_Edit_form.url = virpath + '/BasicSchool_TeacherManager/UpdateSchool?id=' + rows[0].id;
333     }
334 }
335 
336 function del() {
337     var arr = getSelectedArr();
338     if (arr.length > 0) {
339         $.messager.confirm('提示信息', '您确认要删除选中的记录吗?', function (data) {
340             if (data) {
341                 $.ajax({
342                     url: virpath + '/BasicSchool_TeacherManager/DeleteSchool?ids=' + arr2str(arr),
343                     type: 'post',
344                     error: function () {
345                         Msgalert('错误', '删除失败!', 'error');
346                         grid.datagrid('clearSelections');
347                     },
348                     success: function (re) {
349                         var data = eval('(' + re + ')');
350                         if (data.success) {
351                             Msgfade(arr.length + "条记录" + data.msg); //提示消息
352                             grid.datagrid('reload');
353                             grid.datagrid('clearSelections'); //清除所有选中的元素
354                         } else {
355                             Msgalert('错误', data.msg, 'error');
356                         }
357                     }
358                 });
359             }
360         });
361     } else {
362         Msgshow('请先选择要删除的记录。');
363     }
364 }
365 function saveData() {
366     dlg_Edit_form.form('submit', {
367         url: dlg_Edit_form.url,
368         onSubmit: function () {
369             return $(this).form('validate');
370         },
371         success: successCallback
372     });
373 }
374 
375 
376 function showAll() {
377     grid.datagrid({ url: virpath + '/BasicSchool_TeacherManager/GetList/' });
378 }
379 function OpensearchWin() {
380     searchWin.window('open');
381     searchForm.form('clear');
382     $('#Enable2').combobox('setValue', true); //默认设置开启搜素
383 }
384 
385 function SearchOK() { 
386     var lName = $("#lName").val();
387     var tName = $("#tName").val();
388     searchWin.window('close');
389     grid.datagrid({ url: virpath + '/BasicSchool_TeacherManager/Search/', queryParams: { lName: lName, tName: tName} });
390     //经过测试queryParams参数可以提交到后台通过FormCollection获取 也可以Request["ProductName"]=?获取
391 }
392  
393 function closeSearchWindow() {
394     searchWin.window('close');
395 }
396 function closeDetailWindow() {
397     detailsWin.window('close');
398 } 
BasicSchool_TeacherJS.js

  <1>、时间格式化问题:js里的方法   

  var rows = grid.datagrid('getSelections'); 获取Grid当前行的数据,

  <5>、 True 和true是有区别的,true是bool,而True就是个字符串,如果js里使用if else语句,如果条件不符合if,那么不管它符合不符合else,一定会执行else,所以要注意if条件表达式的写法,是否正确。

  <4>、对于checkbox,或者是radio的赋值,使用$("#id").attr("checked", true);即可,如果是其它赋值,都可以使用这种方式,只需要把对应属性换掉即可,如,给img标签指定图片路径:$("#imgPhoto").attr("src", ".." + rows[0].photo); 

  <2>、在加载详细信息div时,指定form表单请求路径,在Action里指向该页面,就体现到下面TeacherInfoUpload.cshtml页面的存在价值了。打开页面的同时,把本页面的当前选中行数据绑定。

  <3>、js里的方法:ajaxAdd(),提交表单的方法,

    上传的时候使用Form表单上传的话,后台无法获取文件的值,只能用submit把整个表单传到后台,而使用submit提交的话,Action又无法返回列表页面,所以把表单内容单独提取出来,放到一个页面里,然后通过js中的方法到于该页面同名的Action中,加载这个form表单,在表单提交时,调用js中的提交方法,方法中到指定的Action中操作数据,然后返回json数据的同时,重新加载列表页面,即可。

  <8>、提交方法:ajaxAdd(),中的Success获取action返回的json数据Data值,根据Data值判断,成功或者是失败,失败提示信息msg 是在action中定义过的

  

3、Controller页面:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Web;
  5 using System.Web.Mvc;
  6 using TeachAid.SpecialCloudEduPlatform.BLL;
  7 using TeachAid.SpecialCloudEduPlatform.Entity;
  8 using System.Web.Script.Serialization;
  9 using Newtonsoft.Json;
 10 using System.IO;
 11 
 12 namespace TeachAid.SpecialCloudEduPlatform.Web.Controllers
 13 {
 14     public class BasicSchool_TeacherManagerController : Controller
 15     {
 16         //
 17         // GET: /BasicSchool_TeacherManager/
 18 
 19         BLLBasicMain_UserInfo userInfoBLL = new BLLBasicMain_UserInfo();
 20         BLLBasicMain_SchoolInfo schoolBLL = new BLLBasicMain_SchoolInfo();
 21         BLLJsonHelper bjb = new BLLJsonHelper();
 22         BLLBasicSchool_Teacher teacherBLL = new BLLBasicSchool_Teacher();
 23         public ActionResult Index()
 24         {
 25             return View();
 26         }
 27 
 28         /// <summary>
 29         /// 获取某学校所有管理员
 30         /// </summary>
 31         /// <returns></returns>
 32         public ActionResult GetList()
 33         {
 34             #region MyRegion
 35             //Dictionary<string, object> dic = new Dictionary<string, object>();
 36 
 37             //string lName = null; string rName = null; int sId = 0;
 38             //if (!string.IsNullOrEmpty(Request.Form["lName"])) lName = Request.Form["lName"].ToString();
 39             //if (!string.IsNullOrEmpty(Request.Form["tName"])) rName = Request.Form["tName"].ToString();
 40             //if (!string.IsNullOrEmpty(Request.Form["TypeId2"])) sId = Convert.ToInt32(Request.Form["TypeId2"]);
 41             //SchoolUserInfoData userInfoData = new SchoolUserInfoData();
 42             //int pageIndex = int.Parse(Request.Form["page"].ToString());
 43             //int pageSize = int.Parse(Request.Form["rows"].ToString());
 44             //var userListByParam = userInfoBLL.GetUserTeacherInfoBySchoolAndRold(((BasicMainUserInfo)Session["UserInfoLogin"]).schoolID, 1);
 45             ////转换成
 46             //var uParam = userListByParam.Select(a => new
 47             //{
 48             //    schoolName = a.schoolInfo.schoolName,
 49             //    id = a.id,
 50             //    userName = a.userName,
 51             //    RealName = a.RealName,
 52             //    pwd = a.pwd,
 53             //    lTitle = a.teacherInfo.titles,
 54             //    tPhone = a.teacherInfo.phone,
 55             //    rdIsDirector = a.teacherInfo.isDirector,
 56             //    tBirth = a.teacherInfo.birthday,
 57             //    rdIsMan = a.teacherInfo.sex,
 58             //    tEmail = a.teacherInfo.email,
 59             //    tBlog = a.teacherInfo.blogUrl,
 60             //    tMotto = a.teacherInfo.motto,
 61             //    fileTeacherPhoto = a.teacherInfo.photo,
 62             //    rdIsEnable = a.teacherInfo.isActive
 63             //}).ToList();
 64 
 65             //dic.Add("total", uParam.Count);
 66             //dic.Add("rows", uParam.Skip(pageSize * (pageIndex - 1)).Take(pageSize));
 67             //return Json(dic);
 68             #endregion
 69 
 70             int pageIndex = int.Parse(Request.Form["page"].ToString());
 71             int pageSize = int.Parse(Request.Form["rows"].ToString());
 72             string biao = "View_BasicSchool_UserTeacherDetails";
 73             string zhid = "id,userName,RealName,pwd,types,schoolID,schoolName,bid,cId,basicMain_UserInfoID,basicMain_SchoolId,loginAccount,cRName,cPwd,isDirector,titles,birthday,phone,sex,email,blogUrl,motto,photo,isActivation,addTime";
 74             string str = " schoolID=" + ((BasicMainUserInfo)Session["UserInfoLogin"]).schoolID + " and types=1 ";
 75             string json = bjb.GetJSON(pageIndex, pageSize, biao, zhid, "id", "desc", str);
 76             return Content(json, "text/html;charset=UTF-8");
 77         }
 78 
 79         /// <summary>
 80         /// 添加一个对象
 81         /// </summary>
 82         /// <param name="collection"></param>
 83         /// <returns></returns>
 84         public ActionResult AddSchoolManager(FormCollection collection)
 85         {
 86             int result = 0;
 87             BasicMainUserInfo userInfo = new BasicMainUserInfo();
 88             userInfo.userName = Convert.ToString(collection.Get("userName"));
 89             userInfo.RealName = Convert.ToString(collection.Get("RealName")); //根据表单里控件Name获取值
 90             userInfo.pwd = Convert.ToString(collection.Get("pwd"));    //密码
 91             userInfo.schoolID = ((BasicMainUserInfo)Session["UserInfoLogin"]).schoolID;   //学校ID  
 92             userInfo.typeId = 1;    //用户类别 1:教师
 93 
 94             Message msg;
 95 
 96             string againPwd = Convert.ToString(collection.Get("pwdAgain"));
 97             if (userInfo.pwd != againPwd)
 98             {
 99                 msg = new Message(false, "两次输入密码不一致,请重新输入");
100             }
101             else
102             {
103                 result = userInfoBLL.IsExist(Convert.ToString(collection.Get("userName")));
104                 if (result != 0)
105                 {
106                     msg = new Message(false, "登录名已经存在,请重新输入");
107                 }
108                 else
109                 {
110                     if (userInfoBLL.AddUserInfo(userInfo) != 0)
111                     {
112                         msg = new Message(true, "添加信息成功!");
113                     }
114                     else
115                     {
116                         msg = new Message(false, "添加失败!");
117                     }
118                 }
119             }
120             return Content(JsonConvert.SerializeObject(msg), "text/html;charset=UTF-8");
121         }
122 
123         /// <summary>
124         /// 查询用户名称是否有重复
125         /// </summary>
126         /// <param name="collection"></param>
127         /// <returns></returns>
128         public ActionResult IsExist(FormCollection collection)
129         {
130             int result = 0;
131             string name = Request.Form["schoolName"].ToString();
132             result = userInfoBLL.IsExist(name);
133             Message msg;
134             if (result != 0)
135             {
136                 msg = new Message(false, "用户登录名已存在,请重新输入");
137             }
138             else
139             {
140                 msg = new Message(true, "用户名输入有效");
141             }
142             return Content(JsonConvert.SerializeObject(msg), "text/html;charset=UTF-8");
143         }
144 
145         /// <summary>
146         /// 修改一个对象
147         /// </summary>
148         /// <param name="id"></param>
149         /// <param name="collection"></param>
150         /// <returns></returns>
151         public ActionResult UpdateSchool(int id, FormCollection collection)
152         {
153             int result = 0;
154             BasicMainUserInfo model = new BasicMainUserInfo();
155             model.id = id;
156             model.userName = Convert.ToString(collection.Get("userName"));
157             model.RealName = Convert.ToString(collection.Get("RealName"));
158             model.pwd = Convert.ToString(collection.Get("pwd"));
159             model.schoolID = ((BasicMainUserInfo)Session["UserInfoLogin"]).schoolID;
160             model.typeId = 1;   //用户类别 1:教师
161             Message msg;
162 
163             string pwdAgain = Convert.ToString(collection.Get("pwdAgain"));
164             if (pwdAgain != model.pwd)
165             {
166                 msg = new Message(false, "两次密码输入不一致,请重新输入!");
167             }
168 
169             result = userInfoBLL.IsExist(Convert.ToString(collection.Get("realName")));
170             if (result != 0)
171             {
172                 msg = new Message(false, "登录名已经存在,请重新输入");
173             }
174             else
175             {
176                 if (userInfoBLL.UpdateUserInfo(model) != 0)
177                 {
178                     msg = new Message(true, "修改信息成功!");
179                 }
180                 else
181                 {
182                     msg = new Message(false, "修改信息成功!");
183                 }
184             }
185             return Content(JsonConvert.SerializeObject(msg), "text/html;charset=UTF-8");
186         }
187 
188         /// <summary>
189         /// 删除对象
190         /// </summary>
191         /// <param name="ids">对象id列表</param>
192         /// <returns></returns>
193         public ActionResult DeleteSchool(string ids)
194         {
195             string[] deleId = ids.Split(',');
196             Message msg;
197 
198             int res = 0;
199             for (int i = 0; i < deleId.Length; i++)
200             {
201                 if (userInfoBLL.DeleteUserInfo(Convert.ToInt32(deleId[i])) > 0)
202                 {
203                     res++;
204                 }
205             }
206 
207             if (res == deleId.Length)
208             {
209                 msg = new Message(true, "数据删除成功!");
210             }
211             else
212             {
213                 msg = new Message(false, "数据删除失败,请重试!");
214             }
215             return Content(JsonConvert.SerializeObject(msg), "text/html;charset=UTF-8");
216         }
217 
218         /// <summary>
219         /// 根据条件查询用户信息
220         /// </summary>
221         /// <returns></returns>
222         public ActionResult Search()
223         {
224             Dictionary<string, object> dic = new Dictionary<string, object>();
225 
226             string lName = null; string rName = null; int sId = 0;
227             if (!string.IsNullOrEmpty(Request.Form["lName"])) lName = Request.Form["lName"].ToString();
228             if (!string.IsNullOrEmpty(Request.Form["tName"])) rName = Request.Form["tName"].ToString();
229             if (!string.IsNullOrEmpty(Request.Form["TypeId2"])) sId = Convert.ToInt32(Request.Form["TypeId2"]);
230             SchoolUserInfoData userInfoData = new SchoolUserInfoData();
231             int pageIndex = int.Parse(Request.Form["page"].ToString());
232             int pageSize = int.Parse(Request.Form["rows"].ToString());
233             var userListByParam = userInfoBLL.GetUserListByPara(lName, rName, sId);
234 
235             //转换成
236             var uParam = userListByParam.Select(a => new
237             {
238                 schoolName = a.schoolInfo.schoolName,
239                 id = a.id,
240                 userName = a.userName,
241                 RealName = a.RealName,
242                 pwd = a.pwd
243             }).ToList();
244 
245             dic.Add("total", uParam.Count);
246             dic.Add("rows", uParam.Skip(pageSize * (pageIndex - 1)).Take(pageSize));
247 
248             return Json(dic);
249         }
250 
251 
252         public ActionResult test()
253         {
254             return View();
255         }
256 
257 
258         /// <summary>
259         /// 中间Action  由于本页面的submit按钮提交表单后,直接返回本页面定义一个中间Action,由此Action返回到对应页面,在页面中通过Ajax
260         /// 方法,把数据post提交到本页面中的处理方法中,进行数据处理,并提交数据
261         /// </summary>
262         /// <returns></returns>
263         public ActionResult TeacherInfoUpload()
264         {
265             //跳转到指定view  该TeacherInfoUpload视图必须是真实存在于view文件夹中
266             return View();
267         }
268 
269 
270         [HttpPost]
271         public JsonResult TeacherInfoUpload(FormCollection form)
272         { 
273             #region 获取用户信息
274             BasicSchoolTeacher teacherInfo = new BasicSchoolTeacher();
275             if (!string.IsNullOrEmpty(form.Get("birthday")))
276                 teacherInfo.birthday = Convert.ToDateTime(form.Get("birthday")).ToShortDateString();
277             if (!string.IsNullOrEmpty(form.Get("blogUrl")))
278                 teacherInfo.blogUrl = form.Get("blogUrl").ToString();
279             if (!string.IsNullOrEmpty(form.Get("email")))
280                 teacherInfo.email = form.Get("email").ToString();
281             if (!string.IsNullOrEmpty(form.Get("motto")))
282                 teacherInfo.motto = form.Get("motto").ToString();
283             if (!string.IsNullOrEmpty(form.Get("phone")))
284                 teacherInfo.phone = form.Get("phone").ToString();
285             if (!string.IsNullOrEmpty(form.Get("titles")))
286                 teacherInfo.titles = form.Get("titles").ToString();
287             teacherInfo.addTime = DateTime.Now.ToShortDateString();
288 
289             #region  bool值判断
290             if (!string.IsNullOrEmpty(form.Get("isDirector")))
291             {
292                 if (form.Get("isDirector").ToString().Contains('1')) { teacherInfo.isDirector = true; }
293             }
294             else teacherInfo.isDirector = false;
295             if (!string.IsNullOrEmpty(form.Get("sex")))
296                 teacherInfo.sex = form.Get("sex").ToString() == "0" ? true : false; //0:男;1:女
297             else teacherInfo.sex = false;
298             if (!string.IsNullOrEmpty(form.Get("isActivation")))
299                 teacherInfo.isActive = form.Get("isActivation").ToString() == "1" ? true : false;
300             else teacherInfo.isActive = false;
301             #endregion
302 
303             #region 根据登录名查询当前要完善用户唯一对象,并把相关信息赋值给教师详细信息
304             BasicMainUserInfo userInfo = (userInfoBLL.GetUserListByPara(form.Get("uName").ToString(), "", ((BasicMainUserInfo)Session["UserInfoLogin"]).schoolID))[0];
305             teacherInfo.basicMain_SchoolId = userInfo.schoolID;
306             teacherInfo.basicMain_UserInfoID = userInfo.id; //用户对应的用户表中的ID
307             teacherInfo.loginAccount = userInfo.userName;
308             teacherInfo.pwd = userInfo.pwd;
309             teacherInfo.realName = userInfo.RealName;
310             #endregion
311             #endregion
312 
313             #region 图片格式验证
314             string[] extens = new string[] { ".jpeg", ".bmp", ".png", ".gif", ".jpg" }; //定义几种文件格式
315             #endregion
316  
317             int result;     //结果
318             BasicSchoolTeacher model = new BasicSchoolTeacher();
319             model = teacherBLL.GetTeacherModelByAccount(form.Get("uName").ToString());
320             
321             #region  操作
322             //修改
323             if (model != null && model.basicMain_UserInfoID != 0)
324             {
325                 //如果用户有上传,则删除原有图片,没有则不上传
326                 if (Request.Files.Count > 0)
327                 {
328                     string fileName = Request.Files[0].FileName;  //获取当前文件名
329                     string ext = Path.GetExtension(fileName);
330                     //验证文件格式
331                     if (extens.Contains(ext))
332                     {
333                         //生成以时间为随机数的新文件名
334                         string newName = DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + "_" + new Random().Next(10, 99).ToString() + ext;
335 
336                         //文件大小不为0
337                         HttpPostedFileBase fileUp = Request.Files[0];
338                         //服务器上的UpLoadFile文件夹必须有读写权限      
339                         fileUp.SaveAs(Server.MapPath(@"~/UploadFile/PersonImg/" + newName));
340 
341                         teacherInfo.photo = @"/UploadFile/PersonImg/" + newName; //为文件重新命名
342                     }
343                     else
344                     { 
345                         return Json(new Message(false, "图片格式不正确,支持.jpeg、.bmp、.png、.gif、.jpg几种格式!"));
346                     }
347                 }
348                 else
349                 {
350                     teacherInfo.photo = form.Get("photoOld").ToString();
351                 }
352                 teacherInfo.id = model.id;
353 
354                 result = teacherBLL.UpdateTeacher(teacherInfo);
355             }
356             else
357             {
358                 //如果用户有上传,则删除原有图片,没有则不上传
359                 if (Request.Files.Count > 0)
360                 {
361                     string fileName = Request.Files[0].FileName;  //获取当前文件名
362                     string ext = Path.GetExtension(fileName);
363 
364                     //验证文件格式
365                     if (extens.Contains(ext))
366                     {
367                         //生成以时间为随机数的新文件名
368                         string newName = DateTime.Now.ToString("yyyyMMddHHmmss") + DateTime.Now.Millisecond.ToString() + "_" + new Random().Next(10, 99).ToString() + ext;
369 
370                         //文件大小不为0
371                         HttpPostedFileBase fileUp = Request.Files[0];
372                         //保存成自己的文件全路径,newfile就是你上传后保存的文件,
373                         //服务器上的UpLoadFile文件夹必须有读写权限      
374                         fileUp.SaveAs(Server.MapPath(@"~/UploadFile/PersonImg/" + newName));
375 
376                         teacherInfo.photo = @"/UploadFile/PersonImg/" + newName;  //为文件重新命名
377                     }
378                     else
379                     { 
380                         return Json(new Message(false, "图片格式不正确,支持.jpeg、.bmp、.png、.gif、.jpg几种格式!")); 
381                     }
382                 }
383                 else
384                 {
385                     teacherInfo.photo = "";
386                 }
387                 result = teacherBLL.AddTeacherModel(teacherInfo);   //修改用户信息
388             }
389             #endregion
390 
391             JsonResult json = new JsonResult(); //执行结果返回
392             if (result != 0)
393             {
394                 json.Data = true;
395             }
396             else
397             {
398                 json.Data = false;
399             }
400             return json;  
401         }
402     }
403 }
BasicSchool_TeacherManagerController.cs

  <8>、Controller中的Action:TeacherInfoUpload  指定json的返回值为:return Json(new Message(false, "图片格式不正确,支持.jpeg、.bmp、.png、.gif、.jpg几种格式!"));  json的Data属性的两个值,这样即可。

4、教师详细信息编辑Form表单 存放用户详细信息的表单,

  1 @{
  2     Layout = null;
  3 }
  4 <script type="text/javascript">
  5 
  6     $(function () {
  7         //这里写新建时初始化控件的值
  8         //入库表单校验
  9         $("#FormTeacherInfo").validate({
 10             submitHandler: function (form) {
 11                 ajaxAdd();
 12             }
 13         });
 14     });
 15     
 16 </script>
 17 @using (Html.BeginForm("TeacherInfoUpload", "BasicSchool_TeacherManager", FormMethod.Post, new { id = "FormTeacherInfo", enctype = "multipart/form-data" }))
 18 {    
 19     <fieldset>
 20         <table>
 21             <tr>
 22                 <td style="text-align: right">
 23                     职称:
 24                 </td>
 25                 <td>
 26                     <input name="titles" id="titles" style=" 150px;" required="true" />
 27                     <input type="hidden" id="uName" name="uName" />
 28                 </td>
 29             </tr>
 30             <tr>
 31                 <td style="text-align: right">
 32                     联系电话:
 33                 </td>
 34                 <td>
 35                     <input name="phone" id="phone" style=" 150px;" required="true" />
 36                 </td>
 37             </tr>
 38             <tr>
 39                 <td style="text-align: right">
 40                     是否是班主任:
 41                 </td>
 42                 <td>
 43                     <input id="isDirector" name="isDirector" type="checkbox" value="1" />
 44                 </td>
 45             </tr>
 46             <tr>
 47                 <td style="text-align: right">
 48                     生日:
 49                 </td>
 50                 <td>
 51                     <input name="birthday" id="birthday" style=" 150px;" required="true" onclick="WdatePicker({skin:'default'})" />
 52                 </td>
 53             </tr>
 54             <tr>
 55                 <td style="text-align: right">
 56                     性别:
 57                 </td>
 58                 <td>
 59                     <input id="rdIsMan" name="sex" type="radio" value="0" /> 60                     <input id="rdIsWoman" name="sex" type="radio" value="1" /> 61                 </td>
 62             </tr>
 63             <tr>
 64                 <td style="text-align: right">
 65                     邮箱:
 66                 </td>
 67                 <td>
 68                     <input name="email" id="email" style=" 150px;" required="true" />
 69                 </td>
 70             </tr>
 71             <tr>
 72                 <td style="text-align: right">
 73                     个人博客:
 74                 </td>
 75                 <td>
 76                     <input name="blogUrl" id="blogUrl" style=" 150px;" required="true" />
 77                 </td>
 78             </tr>
 79             <tr>
 80                 <td style="text-align: right">
 81                     个人座右铭:
 82                 </td>
 83                 <td>
 84                     <input name="motto" id="motto" style=" 150px;" required="true" />
 85                 </td>
 86             </tr>
 87             <tr>
 88                 <td style="text-align: right">
 89                     用户状态:
 90                 </td>
 91                 <td>
 92                     <input id="isActivation" name="isActivation" type="checkbox" value="1" />启用
 93                 </td>
 94             </tr>
 95             <tr>
 96                 <td style="text-align: right ; 150px;">
 97                     形象照片:
 98                     <input name="photoOld" type="hidden" id="photoOld" />
 99                 </td>
100                 <td>
101                     <img id="imgPhoto"  style="border: 1px solid CCC; 100px; height:100px;"  />
102                     <input name="photo" type="file" id="photo" />
103                     <span style=" font-size:12px; color:gray;">仅支持.jpeg、.bmp、.png、.gif、.jpg格式</span>
104                 </td>
105             </tr>
106         </table>
107     </fieldset>     
108 }
TeacherInfoUpload.cshtml

该静态页面中的@using (Html.BeginForm("TeacherInfoUpload", "BasicSchool_TeacherManager", FormMethod.Post, new { id = "FormTeacherInfo", enctype = "multipart/form-data" })){}

指定要把表单数据提交到那个Controller里的Action中去执行,并且指定表单id,提交方法为post

并在页面上方指定该表单提交到哪个方法:

 

太乱了,,不知道过两天自己能不能看懂。。。

原文地址:https://www.cnblogs.com/ZQiuMei/p/3200700.html