0

我想要做的是从控制器内调用一个警报对话框。原因是控制器是由视图通过 ajax 调用调用的,并且不会重新加载页面,因此无法比较临时数据或其他方式中的任何新数据。

该操作的目的是检查签入班级的学生是否应该在那里。如果课程不在他们的日程表中,则权限布尔值保持为假,并且应该弹出一个警报,说明学生不在课程中。

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;

    }
4

2 回答 2

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
    }
});

请注意,我已经更改了您的操作代码。您可能想要查看它并对其进行更多更改。

于 2013-08-05T17:33:35.510 回答
0

将此添加到您的代码中:

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;

        }
于 2013-08-05T17:44:08.400 回答