我想要做的是从控制器内调用警告对话框。 原因是因为控制器由视图通过ajax调用调用,并且不重新加载页面,因此无法比较tempdata中的任何新数据或其他。
行动的目的是检查登记入学的学生是否应该在那里。如果班级不在他们的日程安排中,那么许可bool仍然是假的,并且会弹出一个警告,说明该学生不在课堂上。
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;
}
答案 0 :(得分:2)
让我们更改您的操作,使其返回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
}
});
请注意,我已更改了您的操作代码。您可能希望对其进行检查并进行更改。
答案 1 :(得分:0)
将此添加到您的代码中:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "alrt", "alert('Anything');", true);
像这样
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;
}