从控制器调用报警框
本文关键字:调用 控制器 | 更新日期: 2023-09-27 18:26:27
我想做的是从控制器中调用一个警报对话框。原因是视图通过ajax调用来调用控制器,并且不会重新加载页面,因此无法比较tempdata中的任何新数据或其他数据。
这个动作的目的是检查报到的学生是否应该在那里。如果该课程不在他们的时间表中,那么权限bool将保持为false,并且应该弹出一个警告,说明该学生不在该课程中。
public ActionResult Action(string ccod, int sid)
{
IEnumerable<MvcStudentTracker.Databases.Course> result = from course in db.Courses
join sched in db.Schedules on course.CourseCode equals sched.ClassCode
where sched.StuID == sid
select course;
bool permission = false;
foreach (var item in result)
{
if (item.CourseCode == ccod)
permission = true;
}
if (permission == false)
{
//call alert dialog box "This student is not signed up for this class"
}
return null;
}
让我们更改您的操作,使其返回一个JsonResult
对象。通过这种方式,我们可以在客户端轻松地操纵其结果。正如您已经使用javascript调用它一样,这是最好的解决方案。
因此,您的操作:
public JsonResult Action(string ccod, int sid)
{
IEnumerable<MvcStudentTracker.Databases.Course> result = from course in db.Courses
join sched in db.Schedules on course.CourseCode equals sched.ClassCode
where sched.StuID == sid
select course;
return Json(result.Any(x => x.CourseCode == ccod), JsonRequestBehavior.AllowGet);
}
以及您的视图:
$.ajax({
url: 'root/Action',
cache: false,
type: 'GET',
data: {
ccod: $('...').val()
, sid: $('...').val()
},
dataType: 'json'
}).done(function (data) {
if (data) {
//ok!
}
else {
//permission denied
}
});
请注意,我已经更改了您的操作代码。你可能想复习一下,再修改一下。
将其添加到您的代码中:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "alrt", "alert('Anything');", true);
像htis
public ActionResult Action(string ccod, int sid)
{
IEnumerable<MvcStudentTracker.Databases.Course> result = from course in db.Courses
join sched in db.Schedules on course.CourseCode equals sched.ClassCode
where sched.StuID == sid
select course;
bool permission = false;
foreach (var item in result)
{
if (item.CourseCode == ccod)
permission = true;
}
if (permission == false)
{
//call alert dialog box "This student is not signed up for this class"
Page.ClientScript.RegisterStartupScript(Page.GetType(), "alrt", "alert('This student is not signed up for this class');", true);
}
return null;
}