javascript - 外部 Javascript 中的 Razor 语法

标签 javascript asp.net asp.net-mvc asp.net-mvc-4 razor

您可能知道,ASP.NET MVC 中的 Razor 语法在外部 JavaScript 文件中不起作用。

我目前的解决方案是将 Razor 语法放在一个全局变量中,并从使用该 .js 文件的 mvc View 中设置该变量的值。

JavaScript 文件:

function myFunc() {
  alert(myValue);
}

MVC View 文件:

<script language="text/javascript">
    myValue = @myValueFromModel;
</script>

我想知道如何将 myValue 直接作为参数传递给函数?我更喜欢使用参数进行显式调用,而不是依赖全局变量,但是我不太喜欢 javascript。

我如何使用 javascript 参数实现它?谢谢!

最佳答案

只需让您的函数接受一个参数并在警报(或任何地方)中使用它。

外部.js

function myFunc(value) {
  alert(value);
}

someview.cshtml

<script>
    myFunc(@myValueFromModel);
</script>

不过要记住的一件事是,如果 myValueFromModel 是一个字符串,那么它会以 myFunc(hello) 的形式出现,因此您需要将其包装起来在引号中所以它变成 myFunc('hello') 像这样

myFunc('@(myValueFromModel)');

请注意与 Razor 一起使用的额外 ()。这有助于引擎区分 Razor 代码之间的中断位置,因此不会发生任何奇怪的事情。当周围有嵌套的 (" 时,它会很有用。

编辑

如果要多次执行此操作,则可能需要在 JavaScript 端进行一些更改。主要是显示的示例没有正确描述场景。它将需要修改。您可能想要使用像这样的简单结构。

jsFiddle Demo

外部.js

var myFunc= new function(){
 var func = this,
 myFunc = function(){
    alert(func.value);
 };
 myFunc.set = function(value){
    func.value = value;
 }
 return myFunc;
};

someview.cshtml

<script>
    myFunc.set('@(myValueFromModel)');
    myFunc();//can be called repeatedly now
</script>

关于javascript - 外部 Javascript 中的 Razor 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31866842/

相关文章:

javascript - 将类似的点击事件操作转换为函数?

c# - 如何设置asp.net身份默认登录页面

ASP.NET MVC 5 URL 取决于选择

c# - 如何检测不同的用户设置?启用 Javascript,启用 Cookie

c# - 如何在ASP.NET MVC编辑页面中为HttpPostedFileBase创建输入类型文件?

javascript - HTML Canvas : Fill() not working with no errors in console

javascript - 反转数组 - Eloquent javascript 第 4 章

javascript - DataTables.js 在 row().remove().draw() 调用中删除多行

android - 使用 Android 的 Web 服务进行身份验证的正确方法

asp.net-mvc - Windows XP上的Visual Studio 2010突然崩溃,然后停止工作,直到重新安装