当用户成功重定向到新视图时,是否可以调用javascript函数?
我尝试了以下内容 -
C#
if (Session["UserId"])
{
return RedirectToAction("LoggedIn");
}
CSHTML
@if (Session["UserId"] != null)
{
<script>$('#btnTest').click();</script>
}
失败
JavaScript runtime error: '$' is undefined
我在项目中引用了jquery,只需点击一下按钮即可对其进行测试,但是上面的操作失败了。我怎样才能做到这一点?
答案 0 :(得分:0)
最有可能的是,在实际引用jQuery之前插入了这个HTML。例如,如果你没有引用jQuery直到结束体标记(如你所愿),那么这将在jQuery实际存在之前运行。处理此类事情的最佳方法是使用部分。您可以在布局中为脚本定义一个部分,然后确保该部分低于jQuery等所需的依赖项。
<强> _Layout.cshtml 强>
<script src="/path/to/jquery.js"></script>
@RenderSection("Scripts", required: false)
</body>
<强> AwesomeView.cshtml 强>
@section Scripts
{
@if (Session["UserId"] != null)
{
<script>$('#btnTest').click();</script>
}
}
这将导致生成以下HTML(假设会话变量当然不为空:
<script src="/path/to/jquery.js"></script>
<script>$('#btnTest').click();</script>
</body>
重要的是要注意,这仅适用于标准视图。部分视图无法定义部分,因此如果您需要在部分内部包含一些脚本,则必须采用不同的方法来延迟执行。通常,此时最好的方法是直接使用window.onload
:
var onload = window.onload
window.onload = function () {
onload();
// your code here
}
这应该确保已经加载了jQuery。但是,首先不要在部分中包含JS代码真的更好。这可能会导致许多问题,并且通常会使您的代码非常分散和脆弱。