javascript - 将静态 JavaScript 函数转换为动态函数

标签 javascript jquery asp.net-mvc

在一个 C# MVC 项目中,前端设计师给了我一个 View ,其中包含这个小脚本:

 <script>
    $('#PhaseDD').change(function () {
        var chosenValue = $(this).val();
        $('.ProcessDD').hide();
        if (chosenValue == "")
            $('#DefaultProcess').show();
        if (chosenValue == "Planning")
            $('#PlanningProcess').show();
        if (chosenValue == "Procurement")
            $('#ProcurementProcess').show();
        if (chosenValue == "Installation")
            $('#InstallationProcess').show();
        if (chosenValue == "Closure")
            $('#ClosureProcess').show();
    });
</script>

我想用来自模型的列表替换所有硬编码选项。像这样的事情...

<script>
    $('#PhaseDD').change(function () {
        var chosenValue = $(this).val();
        $('.ProcessDD').hide();
        if (chosenValue == "")
            $('#DefaultProcess').show();

        // loop over a list from the model here

        if (chosenValue == " loop-item-name ")
            $('# loop-item-name + Process').show();

       //  end loop

    });
</script>

这可能吗?如果是这样,怎么办?我是否以正确的方式处理这件事?我想我可以使用 razor 语法,但这不起作用。

最佳答案

您无法将 C# 变量与 JS 变量进行比较。但是您可以使用 razor 从 C# 变量创建 JS 变量。

以下是如何用 C# 数组的值填充 JS 数组:

@{ 
   // fetch this from ViewModel if it needs to be dynamic
   var cSharpNames = new [] { "Planning", "Procurement"}; 
 }

<script>
    var jsNames = []; // this is a JS array

    @foreach(var name in cSharpNames) {
         <text>jsNames.push(@name);</text>
    }

</script>

然后使用 indexOf() 方法在 jsNames 数组中进行搜索,如 Jeremy 所示。

关于javascript - 将静态 JavaScript 函数转换为动态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40424607/

相关文章:

javascript - 检索 Google 表格中的行数

jquery - 垂直对齐似乎不起作用

asp.net-mvc - 是否可以使用 RedirectToAction 清除路由值?

javascript - 当响应是 text/html 时,jQuery $.getJSON() 方法应该失败吗?

javascript - 如何在同一个 react 组件中使用本地状态和 redux 存储状态?

javascript - 将两个 .height() 加在一起?查询

javascript - 当我刷新页面时 Jquery 重置

asp.net - 当模型无效时,返回 View 内的局部 View ,并显示错误消息

asp.net-mvc - 在不使用 ViewModel 对象的情况下,Razor View 是否可以拥有多个模型?

javascript - 正则表达式匹配不同数量的单词