Tal*_*lsi 5 javascript asp.net asp.net-mvc razor asp.net-mvc-4
您可能知道,ASP.NET MVC中的Razor语法不适用于外部JavaScript文件.
我目前的解决方案是将Razor语法放在一个全局变量中,并从使用该.js文件的mvc视图中设置该变量的值.
JavaScript文件:
function myFunc() {
alert(myValue);
}
Run Code Online (Sandbox Code Playgroud)
MVC查看文件:
<script language="text/javascript">
myValue = @myValueFromModel;
</script>
Run Code Online (Sandbox Code Playgroud)
我想知道如何直接将myValue 作为参数传递给函数?我更喜欢使用param进行显式调用而不是依赖于全局变量,但是我并不热衷于javascript.
我如何用javascript参数实现这个?谢谢!
让你的函数接受一个参数并在警报(或任何地方)中使用它.
external.js
function myFunc(value) {
alert(value);
}
Run Code Online (Sandbox Code Playgroud)
someview.cshtml
<script>
myFunc(@myValueFromModel);
</script>
Run Code Online (Sandbox Code Playgroud)
但要注意的一件事是,如果myValueFromModel是一个字符串然后它将会通过,myFunc(hello)所以你需要将它包装在引号中,所以它变成myFunc('hello')这样
myFunc('@(myValueFromModel)');
Run Code Online (Sandbox Code Playgroud)
注意()剃须刀额外使用.这有助于引擎区分剃刀代码之间的中断位置,因此没有什么奇怪的事情发生.当有嵌套(或"周围时它可能很有用.
编辑
如果要多次执行此操作,则可能需要在JavaScript结尾处进行一些更改.主要是所示示例没有正确描述该场景.它需要修改.您可能想要使用这样的简单结构.
external.js
var myFunc= new function(){
var func = this,
myFunc = function(){
alert(func.value);
};
myFunc.set = function(value){
func.value = value;
}
return myFunc;
};
Run Code Online (Sandbox Code Playgroud)
someview.cshtml
<script>
myFunc.set('@(myValueFromModel)');
myFunc();//can be called repeatedly now
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5619 次 |
| 最近记录: |