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

Nir*_*man 3 javascript asp.net-mvc asp.net-mvc-3

我正在对我的 MVC 应用程序进行修改,以禁止用户在单个会话中打开多个选项卡/窗口。为了做到这一点,我正在参考这篇文章(点击此处) 。本文是为 ASP.NET 编写的,而我需要为 ASP.NET MVC 实现此功能。我认为这一切在 MVC 中应该是可能的,但是,我不确定我应该做什么来重写这个

if(window.name != "<%=GetWindowName()%>")
Run Code Online (Sandbox Code Playgroud)

GetWindowName() 是我在控制器中创建的函数,它从 Session 对象返回“WindowName”键的值。我怎样才能在上面的javascript中读取它的值?

von*_* v. 5

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

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

然后通过ajax调用:

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