我如何在ASP MVC应用程序的视图中调用javascript函数

Abh*_*rya 5 c# asp.net asp.net-mvc razor

我的视图页面中有以下JavaScript函数:

<script type="text/javascript">
  function func(nam) {
    alert(nam);
</script>
Run Code Online (Sandbox Code Playgroud)

我调用此函数的视图代码在同一页面上如下所示:

@foreach (var item in Model)
{
  <script>func(@item.name) </script>
}
Run Code Online (Sandbox Code Playgroud)

它不会产生任何结果.

我需要在html中调用JavaScript函数,但它没有发生.请帮助我完成它.

还有其他调用JavaScript函数的方法吗?

Shy*_*yju 8

假设您的item.Name属性具有字符串值SomeThing.因此当剃刀渲染您的页面时,您生成的标记将是

<script> func(SomeThing) </script>
Run Code Online (Sandbox Code Playgroud)

现在javascript引擎认为这SomeThing是一个js变量.但是我们没有一个js变量,该名称已定义并在之前初始化.所以你可能会看到一个脚本错误说

SomeThing未定义

您需要将参数作为字符串文字传递.用单引号或双引号括起来.

<script>func('@item.name') </script>
Run Code Online (Sandbox Code Playgroud)

此外,您需要确保func在尝试执行该方法之前定义了javascript方法.

<script>    
    function func(nam) {
        alert(nam);
    }
</script>

<script>func('@item.Name') </script>
Run Code Online (Sandbox Code Playgroud)

如果函数在外部js文件中,则需要确保在执行方法之前包含/加载它.

<script src="~/Scripts/YourJsFileWherFuncIsDefined.js"></script>
<script>func('@item.Name') </script>
Run Code Online (Sandbox Code Playgroud)