【问题标题】:MVC3 Trigger multiple functions on ActionLink OnComplete event?MVC3 在 ActionLink OnComplete 事件上触发多个函数?
【发布时间】:2012-03-18 00:49:07
【问题描述】:

如何在 MVC3 ActionLink 中的 OnComplete 事件上触发多个函数:

 OnComplete = "function() { one(); two(); }"

这对我不起作用?有什么想法吗?

【问题讨论】:

  • 动作链接部分生成的 Html 输出是什么?

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


【解决方案1】:

如何将其映射到函数:

...{ OnComplete = "Completed" }...

<script>
  function Completed(){
    one();
    two();
  }
</script>

MVC 正在寻找函数的名称,而不是要执行的代码字符串。

【讨论】:

  • @my 函数位于不同的 .js 文件中,加载顺序是否重要或不能以这种方式完成?
  • @Ingol:取决于你如何加载它们。只要函数存在,在 MVC 可以访问的范围内,但调用的时间,一切都应该没问题。
【解决方案2】:

如果您希望为点击的ActionLink() 执行 JavaScript,您可以这样做:

@Html.ActionLink("YourAction", null, new { onclick = "function() { one(); two(); }" })

但如果您真的希望在 Action 方法完成后执行某些操作,则需要编写自己的 ActionFilter:

public class ActionExecutionFinal : ActionFilterAttribute
{
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        // do something here
    }
}

你会像这样将它应用到你的 Action 方法中:

[ActionExecutionFinal]
public ActionResult YourActionMethod()
{
    return View();
}

【讨论】:

    【解决方案3】:

    如果你这样做会怎样

    查看

    OnComplete = "a"
    

    JavaScript

    function a()
    {
        b();
        c();
    }
    

    【讨论】:

    • 我的函数在不同的 .js 文件中,加载顺序很重要还是不能以这种方式完成,或者我需要制作某种全局函数??
    • 如果你的js文件加载在同一个页面,那么它们会互相看到。这就是 JavaScript 有很多命名空间问题的原因。文件A可以有打印功能,文件B可以有打印功能。
    • 但在示例中,函数 b 在不同文件中与函数 c & a 没有区别。
    • 谢谢我解决了,函数必须是全局的,而不是在文档中。准备好了,现在,一切正常......干杯
    猜你喜欢
    • 1970-01-01
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多