我正在尝试动态创建函数的名称:
我在剃刀代码中设置名称:
@ { name="bob"; }
然后我尝试创建javascript函数,但语法错误。
function @name@:_onActivate() {
.....
}
如何在函数名称中使用@name?
答案 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>