在javascript(foreach和<text>)中遍历模型对象

Din*_*ndi 1 asp.net model asp.net-mvc-4

通过网站我得到了如何在JavaScript中访问模型以及如何在javascript中循环它.我正在使用文本标签来访问模型中的项目.当我使用我无法添加休息时.

        @foreach (var item in Model.ArrayDetails)
           {
               var checklower = false;
               var checkUpper = false;
               var loopentered = false;

               <text>
                if(@item.Id ==1)
               { 
                  if(@item.LowerBound <= obj.value)
                      {
                       loopentered=true;
                       checklower=true;
                     }

                  if(loopentered)
                  { 

                  alert(@item.UpperBound <= obj.value);
                     if(@item.UpperBound <= obj.value)
                        {
                     checkUpper = true;
                    }
                  }

               if(checkUpper && checklower)
               {
              ***// here i want to add break statement(if i add javascript wont work)***
               }
             }
              </text>
            }
Run Code Online (Sandbox Code Playgroud)

有人可以建议我怎么解决这个问题.

Dar*_*rov 6

不要写这个汤.JSON将您的模型序列化为javascript变量,并使用此javascript变量编写您的javascript代码.现在你有一个糟糕的服务器端和客户端代码混合.

这就是我在实践中的意思:

<script type="text/javascript">
    // Here we serialize the Model.ArrayDetails into a javascript array
    var items = @Html.Raw(Json.Encode(Model.ArrayDetails));

    // This here is PURE javascript, it could (AND IT SHOULD) go into
    // a separate javascript file containing this logic to which you could
    // simply pass the items variable
    for (var i = 0; i < items.length; i++) {
        var item = items[i];

        var checklower = false;
        var checkUpper = false;
        var loopentered = false;

        if (item.Id == 1) {

            if (item.LowerBound <= obj.value) {
                loopentered = true;
                checklower = true;
            }

            if (loopentered) { 
                alert(item.UpperBound <= obj.value);
                if(item.UpperBound <= obj.value) {
                    checkUpper = true;
                }
            }

            if (checkUpper && checklower) {
                break;
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

将javascript移动到单独的文件后,您的视图将变为:

<script type="text/javascript">
    // Here we serialize the Model.ArrayDetails into a javascript array
    var items = @Html.Raw(Json.Encode(Model.ArrayDetails));

    myFunctionDefinedIntoASeparateJavaScriptFile(items);
</script>
Run Code Online (Sandbox Code Playgroud)