首页 > 解决方案 > 带有一些 Razor 的 Javascript 不能在外部工作

问题描述

我有一个javascript函数

 function GotoFPLoginPage() {
            var url = '@(ViewBag.Title)';
            if (url.includes("Home")) {
                window.location.href = "/FPLogin/Index";
            }
        }

执行:

<html onclick="GotoFPLoginPage()">

这样做的目的是当用户单击页面的任何部分时,它将重定向到另一个目标页面。

如果我在我的内部使用函数本身,则此示例运行良好,_layout page但是当我尝试将其设为 javascript 文件并创建唯一名称时Custom_JSFile,调用GotoFPLoginPage() 它不起作用。

 @Scripts.Render("~/Scripts/Custom_JSFile.js")

任何想法都受到高度赞赏。

标签: javascriptrazorasp.net-mvc-5

解决方案


当您将 JavaScript 函数移动到单独的 JavaScript 文件中时,您是否会修改它?

此行在 .js 文件中不起作用,因为您无权访问 ViewBag。

var URL = '@(ViewBag.Title)';

这在 .cshtml 文件中起作用的原因是因为您使用剃刀语法来访问 ac# 对象。这会将对象中的值插入到 JavaScript 中,结果将被评估。

由于 razor 语法在 JavaScript 文件中无效(在 JavaScript 文件中 ViewBag 的上下文也为零),这将不起作用,并且您的 URL 值将等于“@(ViewBag.Title)”。

您必须将值ViewBag.Title放在 JavaScript 能够访问它的地方。


推荐阅读