ASP.NET MVC 標籤綁定傳值及後臺獲取並進行修改操作

  先在aspx頁面中引用對象,比如,我要修改teacher的相關信息,則引用edmx中創建的對象,代碼如下:

  <%@ Page Language="C#"  Inherits="System.Web.Mvc.ViewPage<EducationManage.Areas.BaseInfoManage.Models.Teachers>" %>

  前臺使用MVC標籤進行綁定傳值,代碼如下:

  <%:Html.TextBoxFor(t => t.name, new { id = "teacherModifyName", autocomplete = "off", style = "width:150px",maxLength = "16" })%> 

  //上面代碼是綁定teacher表中的name字段

  需要傳什麼值,即綁定該字段。

  接下來在後臺接收值,這是很關鍵的一步。

public ActionResult TeacherModify(Teachers teacherUpdate)
        {
            try
            {
                TeacherEntities teacherEntities = new TeacherEntities();
                Teachers teachers = teacherEntities.teachers.SingleOrDefault(t => t.teacher_id == teacherUpdate.teacherId);
                teacherUpdate.sex = "1";  //前臺沒有用標籤綁定的字段需要自己賦值
                teacherUpdate.state = "2";  //前臺沒有用標籤綁定的字段需要自己賦值
                //teachers.type = teacher.type;         

                //teachers.job_title = teacher.job_title;
                //teachers.degree = teacher.degree;
                //teachers.education = teacher.education;

      //上面四行代碼被我註釋掉了,如果前臺已經用MVC標籤綁定,則不需要再重新賦值,MVC實體管理器會自動進行修改,這正是MVC的精妙

                //可以減少很多代碼量,這裏只針對修改數據而言,增加另當別論

      teacherEntities.ApplyCurrentValues("teachers", teacherUpdate);  //這裏的teacher對應數據庫中的表名,不能寫錯
                teacherEntities.SaveChanges();

      需要特別說明的是teacherUpdateteachers

      teacherUpdate是從前臺傳過來的一個對象,而teachers是通過teacherUpdate的id查找出來的,這個步驟是必要的。

      如果沒有Teachers teachers = teacherEntities.teachers.SingleOrDefault(t => t.teacher_id == teacherUpdate.teacherId);這段代碼,則在teacherEntities.ApplyCurrentValues("teachers", teacherUpdate);這個地方會出異常。切忌!

                return View("~/Areas/BaseInfoManage/Views/FileUploadUpdateSuccess.aspx");  //最後再返回頁面
            }
            catch
            {
                log.Error("修改教師信息失敗");
                return View("~/Areas/BaseInfoManage/Views/FileUploadUpdateError.aspx");
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章