MVC之模态框的使用(使用局部刷新,分部视图,传输多个Model,返回占位)
一、boostrap模态框的使用(编辑,新增功能)
(一)编辑功能(难)
1.使用Ajax.BeginForm辅助方法,通过提交表单(name值),可先获取对象ID,再通过ID找到其对象
注意!!!(关键):
(Ajax.BeginForm("_studentInfoByStuId", "manage",...)中的处理(控制器)的视图名要与分部视图同名
@using (Ajax.BeginForm("_studentInfoByStuId", "manage", new AjaxOptions { //要占位替换的元素ID UpdateTargetId = "ModalByGetStudent", //方式 InsertionMode = InsertionMode.Replace, //提交方式 HttpMethod = "POST" })) { "text" name="studentID" value="@item.ID" />
//注意!!!(关键):submit处的onclick="$('#ModalByGetStudent').css('display', 'block');"模态框会自动隐藏(默认none),需要我们手动将其display修改为“block” "submit" value="" title="修改班级" id="editClassBtn" data-bs-toggle="modal" data-bs-target="#ModalByGetStudent" onclick="$('#ModalByGetStudent').css('display', 'block');"/> }
2.控制器处理
//POST:修改学生信息 [HttpPost] public ActionResult _studentInfoByStuId()//(控制器)的视图名 { //获取学生ID int sId = int.Parse(Request["studentID"]); IEnumerablestudent = db.Student.Where(s => s.ID == sId).ToList(); //民族 IEnumerable nationList = db.Nation.ToList(); //专业 IEnumerable ProfessionalList = db.Professional.ToList(); //Tuple:传输多个Model,返回至分部视图(看自己需要,如果是单个就直接返回对应MODEL) var tupleModel = new Tuple , IEnumerable , IEnumerable >(student,nationList,ProfessionalList); return PartialView(tupleModel); }
3.分布视图
//强类型转换
@model Tuple, IEnumerable , IEnumerable > class="modal-dialog modal-lg">class="modal-content" style="width: 750px;margin: 0 auto;">
_studentInfoByStuId