4

I am trying to create the name of a function dynamically:

I set the name in razor code:

 @ { name="bob"; }

Then I try to create the javascript function, but the syntax is wrong.

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

How can I use @name in the name of the function?

4

6 回答 6

8

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

使用 @() Razor 语法:

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

奇迹般有效

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

于 2016-10-21T14:38:02.440 回答
5

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

@{
    @:function  
        @name<text>_onActivate() {
           ....
        }
   </text>
}
于 2013-10-17T16:53:37.187 回答
1

还有另一种选择:

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

@functionStart
{
    ...
}

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

于 2015-08-09T19:56:18.207 回答
0

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

另一种选择可能不是动态命名函数,而是将名称作为参数传递——但这是否可行可能取决于您的设计/实现。

于 2013-10-17T16:24:49.823 回答
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>
于 2017-12-22T17:59:32.190 回答
0

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

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

然后你可以在你的函数声明中使用这个字符串:

<script>
function @funcTxt {
    ...
}
</script>
于 2019-12-13T13:20:57.403 回答