先在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();
需要特別說明的是teacherUpdate和teachers
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");
}
}