从控制器调用警告框

时间:2013-08-05 17:13:48

标签: c# asp.net-mvc

我想要做的是从控制器内调用警告对话框。 原因是因为控制器由视图通过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;

    }

2 个答案:

答案 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;

        }