返回JavaScript()。 4个好动作 - 1个恶行!

时间:2009-10-21 18:57:53

标签: javascript asp.net-mvc

糟糕的'返回JavaScript'是这样的:

  1. 这是选中的操作链接。

    Ajax.ActionLink("Sign Out", "LogOff", "Account", new AjaxOptions { })
    
  2. 这是行动。

    public ActionResult LogOff()   
    {      
        FormsAuth.SignOut();   
        return JavaScript("ClearDisplayName()");  
    } 
    
  3. 永远不会调用JavaScript!

  4. Additioinal信息:

    所有javascript函数都在.js文件中。

    在同一个文件中,其他四项操作成功完成了return JavaScript(...)

    我通过return JavaScript("ClearDisplayName()")ClearDisplayName()测试了四个工作行为 他们都成功地致电return JavaScript("OtherKnownWorkingJava()")

    我通过{{1}}没有运气来测试失败的动作。

    对于这种奇怪的行为有什么想法吗?

    我注意到所有成功的操作都先通过View。 麻烦的行动不会,它直接来自ActionLink。

3 个答案:

答案 0 :(得分:1)

在对这个问题投了一些泥,这就是我能打电话的方式 'return JavaScript(“ClearDisplayName”)'。

而不是从 LogOff 尝试'返回JavaScript(“ClearDisplayName”) 动作,我重定向到另一个动作, LogOffA ,并在那里做了一个'返回JavaScript(“ClearDisplayName”),它有效!!

    public ActionResult LogOffA()
    {
        return JavaScript("ClearDisplayName()");
    }

    public ActionResult LogOff()
    {
        FormsAuth.SignOut();
        return RedirectToAction("LogOffA", "Account");
        //return JavaScript("ClearDisplayName()");
    }

答案 1 :(得分:0)

FormsAuth是否正确定义?不应该是FormsAuthentication

答案 2 :(得分:0)

Ajax.ActionLink还调用了其他操作吗?

我怀疑Ajax.ActionLink将处理JavaScript返回。如果是这样,您要么自己处理结果(使用eval(响应)),要么避免使用Ajax.ActionLink,或者返回视图而不是 $(文件)。就绪(函数(){<%=计算机[ “jsfunc”]%GT;};); - 这很可能会被处理,但你需要jQuery。