ASP.NET Core Identity中_LoginPartial.cshtml无法调用JavaScript函数怎么办
问题根因
JavaScript代码是按浏览器解析的先后顺序逐行执行的,你当前的代码中:
- 调用
myFunction()的<script>标签写在页面中部的用户登录判断分支内 - 定义
myFunction()的<script>块放在整个页面的最底部
浏览器先解析到调用函数的代码时,函数还没有被定义,自然会抛出myFunction 未定义的报错。另外你当前的函数只是返回了字符串,没有任何将返回值渲染到页面的逻辑,所以就算调用成功也不会看到内容显示。
解决步骤
- 调整JS代码顺序,将函数定义移到调用位置之前
可以把底部定义myFunction()的script块移动到页面头部的第三方JS引用之后,示例:
<!-- 原有第三方引用保持不变 --> <link rel="stylesheet" href="https://cdn.datatables.net/1.10.21/css/jquery.dataTables.min.css" /> <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.js"></script> <script type="text/javascript" src="https://cdn.datatables.net/1.10.21/js/jquery.dataTables.min.js"></script> <!-- 把自定义函数移到这里,保证调用前已经定义 --> <script type="text/javascript"> function myFunction() { return "Some data"; } </script>
- 新增页面容器接收函数返回值,修改调用逻辑
在你需要显示内容的位置新增一个DOM容器,再调用函数将返回值写入容器:
<li class="nav-item"> <a id="manage" class="nav-link text-white" title="Manage">Some text : </a> <!-- 新增容器用于展示函数返回内容 --> <span id="customContent" class="nav-link text-white"></span> </li> <script> // 调用函数并把返回值写入页面 document.getElementById('customContent').textContent = myFunction(); </script>
- 额外优化建议
_LoginPartial是分部视图,建议把jQuery、DataTable这类通用的静态资源引用统一放到_Layout.cshtml布局页中,避免多个分部视图重复引用相同资源导致的JS冲突。
内容的提问来源于stack exchange,提问作者Adamszsz
相关产品推荐
相关产品推荐

