在每个控制器操作上注入 javascript - asp.net mvc

use*_*796 4 asp.net-mvc action controller viewmodel

每当我们通过完整回发或ajax调用调用任何动作控制器时,我想检查视图模型并根据某些逻辑注入一些要在浏览器中执行的javascript。该应用程序大部分已经编码,我想要做的是拥有一些可以解决问题的通用代码。我想知道什么是最好的方法。我正在考虑使用动作过滤器,然后检查模型,然后在需要时注入 js。但不确定这如何处理诸如执行的动作等事件。任何代码示例都会有所帮助。

另一种选择是在客户端进行。但再次不确定如何以通用方式正确地做到这一点。

Chr*_*ris 6

查看覆盖基本控制器的 OnActionExecuted 事件,该事件应在操作处理完视图模型后提供对视图模型的访问。不过我很好奇,你到底要如何将一段 javascript 注入到 AJAX 响应中,这通常是一个简单的 JSON 对象?

如果您真正要问的是如何从控制器注入 javascript,您可以将以下内容放在您的视图中:

<script type="text/javascript" defer="defer">
    @Html.Raw(ViewBag.StartupScript)
</script>
Run Code Online (Sandbox Code Playgroud)

您可以将上述内容添加到特定视图或布局页面。然后,你可以做这样的事情:

public class MyController : Controller
{
    public override void OnActionExecuted(...)
    {
        if (...)
        {
            ViewBag.StartupScript = "alert('hello world!');";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)