如何从MVC中的javascript调用服务器端函数?

时间:2013-04-19 07:06:15

标签: javascript asp.net-mvc asp.net-mvc-3

我正在修改我的MVC应用程序,以禁止用户在一个会话中打开多个选项卡/窗口。 我正在参考this article (click here)来做到这一点。 本文是为asp.net编写的,而我需要为ASP.NET MVC实现此功能。 我认为这一切都应该可以在MVC中实现,但是,我不知道该怎么做才能重写这个

if(window.name != "<%=GetWindowName()%>")

GetWindowName()是我在Controller中创建的函数,它从Session对象返回值“WindowName”键。如何在上面的javascript中读取它的值?

2 个答案:

答案 0 :(得分:4)

你可以使用ajax(jQuery):

$.get('@Url.Action("GetWindowName")', function(result){
    if(window.name != result)
    //...
});

这是剃刀语法......

答案 1 :(得分:4)

您可以为此编写控制器方法:

public ActionResult GetWindowName()
{
  Session["WindowName"] = 
    Guid.NewGuid().ToString().Replace("-", "");
  return Json(Session["WindowName"].ToString());
}

然后通过ajax调用它:

$.get('@Url.Action("GetWindowName")', function(data){
    if(window.name != data) {
        // do what you need to do here
    }
})