糟糕的'返回JavaScript'是这样的:
这是选中的操作链接。
Ajax.ActionLink("Sign Out", "LogOff", "Account", new AjaxOptions { })
这是行动。
public ActionResult LogOff()
{
FormsAuth.SignOut();
return JavaScript("ClearDisplayName()");
}
永远不会调用JavaScript!
Additioinal信息:
所有javascript函数都在.js文件中。
在同一个文件中,其他四项操作成功完成了return JavaScript(...)
。
我通过return JavaScript("ClearDisplayName()")
和ClearDisplayName()
测试了四个工作行为
他们都成功地致电return JavaScript("OtherKnownWorkingJava()")
。
我通过{{1}}没有运气来测试失败的动作。
对于这种奇怪的行为有什么想法吗?
我注意到所有成功的操作都先通过View。 麻烦的行动不会,它直接来自ActionLink。
答案 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。