如何从 Razor 视图调用 Javascript

Joh*_*Doe 5 javascript razor asp.net-mvc-3

如何从剃刀视图调用 Javascript 方法?

起初我试过

@if (TempData["myMessage"] != null)
{ 
    @:displayMessage();
}
Run Code Online (Sandbox Code Playgroud)

当页面呈现时,我从字面上看到了“@:displayMessage(); 在我的 HTML 页面上。

所以我尝试了。

@if (TempData["myMessage"] != null)
{ 
    <script type="text/javascript">displayMessage();</script>
}
Run Code Online (Sandbox Code Playgroud)

如果该 html 页面上存在 displayMessage 函数,则该方法有效。但是,在我的情况下, displayMessage 存在于单独的 javascript 文件中。(包含在此网页中)

Kon*_*nev 8

当您正在渲染的页面的这一部分被渲染时,您尝试调用的 JavaScript 将被调用。您的displayMessage函数当时可能会加载,也可能不会加载,具体取决于您是否从单独的 js 文件加载它,引用它的脚本源是否位于您尝试调用它的当前脚本标记下方,等等。您可以推迟调用直到窗口加载完毕,如下所示:

@if (TempData["myMessage"] != null)
{ 
    <script type="text/javascript">
         window.onload = function () {
             displayMessage();
         };
    </script>
}
Run Code Online (Sandbox Code Playgroud)