您可能知道,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 端进行一些更改。主要是显示的示例没有正确描述场景。它将需要修改。您可能想要使用像这样的简单结构。
外部.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/