MVC 4 Razor - 动态命名javascript函数

时间:2013-10-17 16:20:50

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

我正在尝试动态创建函数的名称:

我在剃刀代码中设置名称:

 @ { name="bob"; }

然后我尝试创建javascript函数,但语法错误。

function @name@:_onActivate() {
   .....
}

如何在函数名称中使用@name?

6 个答案:

答案 0 :(得分:6)

我知道我迟到了,但我有同样的问题,想出了这个......

使用@()Razor语法:

function @(Model.Name)_Init() {     .....一些代码...... }

像魅力一样工作

http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx/

答案 1 :(得分:5)

这被发现可以动态编写Javascript函数名称

@{
    @:function  
        @name<text>_onActivate() {
           ....
        }
   </text>
}

答案 2 :(得分:1)

还有另一种选择:

@{
     var functionStart = "function " + name + "_onActivate()";
}

@functionStart
{
    ...
}

在某些情况下,此方法在Visual Studio中不会造成太多混乱。

答案 3 :(得分:0)

如果您的JavaScript在视图中(而不是它自己的js文件 - 虽然我不是说我认为这是可取的),您可以尝试将您的JS代码包装在<text>标记中,以便解析器切换回HTML模式(与C#模式相比)。

另一个替代方案可能是动态命名函数,而是将名称作为参数传递 - 但是否可行取决于您的设计/实现。

答案 4 :(得分:0)

这对我很有用:

@{
    var someFuncName          = "someFuncName";
    var someFuncName2         = "someFuncName" + Model.type;
    var someDynamicFunc       =  Model.funcName;
    var someFuncNameComplete  =  "functionHelper()";
}

<script type="text/javascript">
    function @someFuncName@{<text>()</text>}{
        ...
    }
    function @someFuncName2@{<text>(data)</text>}{
        ...
    }
    function @someDynamicFunc@{<text>()</text>}{
        ...
    }
    function @someFuncNameComplete{
        ...
    }
</script>

答案 5 :(得分:0)

首先,您可以在具有以下结构的字符串中设置函数名称:

@{ 
    string name = "bob";
    string funcTxt = name + "_onActivate()"; 
}

然后您可以在函数声明中使用此字符串:

<script>
function @funcTxt {
    ...
}
</script>