【问题标题】:MVC 4 Razor - Naming javascript functions dynamicallyMVC 4 Razor - 动态命名 javascript 函数
【发布时间】:2019-12-13 21:20:57
【问题描述】:

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

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

 @ { name="bob"; }

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

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

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

【问题讨论】:

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


【解决方案1】:

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

使用@() Razor 语法:

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

像魅力一样工作

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

【讨论】:

    【解决方案2】:

    这被发现在动态编写 Javascript 函数名称时起作用

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

    【讨论】:

      【解决方案3】:

      还有另一种选择:

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          这对我很有效:

          @{
              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>
          

          【讨论】:

            【解决方案6】:

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

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

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

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

            【讨论】:

              猜你喜欢
              • 2013-07-20
              • 1970-01-01
              • 2015-03-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多