MVC新增、删除
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:
作者:梁柏源
撰写时间:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这次分享的是MVC中的增、改、删、查中的查和删。
首先,先讲“查”:MVC中的“查”与数据库中的有所差别;
与数据库中查询不同,在数据库中查询是这样的例如:多表查询
SELECT 学院表.院系名称, 专业表.专业名称,
专业表.国家专业编码, 专业表.学制,专业表.培养层次,
专业表.年级,班级表.班级名称,学生表.学号,学生表.姓名
FROM 学院表 INNER JOIN
专业表 ON 学院表.院系ID = 专业表.院系ID INNER JOIN
班级表 ON 专业表.专业ID = 班级表.专业ID INNER JOIN
学生表 ON 班级表.班级ID = 学生表.班级ID
where 学院表.院系ID=3 and 专业表.年级=2018
and 班级表.班级名称='1803'
(注意:数据库中查询的时候标点符号要用英文状态下的)
但与数据库一样,查(select)是最复杂的,“查”:有几种分别为最简单的单表查询(含有(1)查询所有列和(2)查询部分列)还有复杂的多表查询(两个表查询或三个表连接)和条件查询;
废话不多,进入正题:
public ActionResult Select (int TitleID)
{
try
{
var exercise= (from tbTitle in myModel.PW_Title
join tbTitleType in myModel.SYS_TitleType on tbTitle.TitleTypeID equals tbTitleType.TitleTypeID
where tbTitle.TitleID == TitleID
select new
{
tbTitle.Stem,
RightKey = tbTitle.RightKey,
TitleType = tbTitleType.TitleType.Trim()
}).Single();
return Json(exercise, JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
return Json("", JsonRequestBehavior.AllowGet);
}
}
这是一段根据题目的ID查询题目的信息,首先来个public ActionResult 给个名称ID,然后相对于数据库中的查询逻辑差不多,比较抽象,var 后就比较重要了,大致是讲从什么表中找到什么的数据
最后返回就行。对了还有myModel这个是数据库的实例化具体实例化是这样的
Models.CQUPTEntities myModel = new Models.CQUPTEntities();
还可以简化成这样CQUPTEntities myModel = new CQUPTEntities();
是不是觉得和上面的数据库查询有点像SELECT FROM 还有from
Join in on equals,其实意思都是一样的都是从什么表中找什么数据
下面开始查询备注123的信息:
查询成功后有3条备注着123的数据。
好的查询在这就完了,接下来是“删除(delete)”了,同样的拿数据库作对比
delete from 要删除数据所在的表
where 所在表的ID名称=要删除的数据ID
注意:在数据库中一条新增指令只能操作一个表,并且一定要注意是否启用where;建议启用 “键值ID”精确定位数据,以防删错数据或者多删。
然而在MVC中是这样的
public ActionResult Delete (int TitleID)
{
try
{
var title = myModel.PW_Title.Where(m => m.TitleID == TitleID).Single();
myModel.PW_Title.Remove(title);
myModel.SaveChanges();
return Json(true, JsonRequestBehavior.AllowGet);
}
catch (Exception)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
同样的套路:根据题目的ID删除信息,具体的与数据库删除的意思差不多,但在MVC中最好
还得有判断和选择,判断数据可不可以删除和删除的时候给客户再次确认是否删除,删除虽
简单但也要谨慎,毕竟与数据库挂钩,删了就很难找回来的(大多数找不回来,只有技术很高很高超的人才可以o( ̄▽ ̄)d )
$("删除按钮的ID").click(function () {
$.ajaxSettings.async = false;
var Return = 0;返回成功的数据
var checkStatus = layuiTable.checkStatus('tabTitles').data;
if (checkStatus.length > 0) {
layer.confirm("是否需要删除选择的试题?", { icon: 6, offset: '100px;' }, function (index) {
layer.close(index);
if (JudgingState() == false) {
for (var i = 0; i < checkStatus.length; i++) {
$.ajax({
url: "DeleteTitles?TitleID=" + checkStatus[i].TitleID,//所需要的列表接口地址(控制器的方法)
async: false,
type: 'get',//数据传输通道的类型
dataType: 'json',//传输的数据类型
success: function (data) {
if (data) {
Return++;
}
}
});
}
if (Return == checkStatus.length) {
tabTitleInforSearch();//刷新数据
}
else {
layer.alert("数据异常!");
}
} else {
layer.alert("不可删除的项!不能删除", { icon: 2, offset: '100px;' });//图标与大小
}
});
} else {
layer.alert("请选择数据", { icon: 6, offset: '100px;' });
}
});
接下来就不多说直接看结果