使用javascript迭代mvc模型列表

时间:2010-05-04 09:48:01

标签: javascript asp.net-mvc

我想迭代我的模型值。以下是我为实现这一目标所做的工作。但是可变计数永远不会增加。如何增加它以迭代我的模型值?

<script  language="javascript" type="text/javascript">
     function AddStudentName() {

                    var StudentName = document.getElementById('txtStudentName').value;

                    StudentName= StudentName.replace(/^\s+|\s+$/g, '');

                    if(StudentName!= null)
                    {                
                      <%int count = 0; %>
                      for(var counter = 0; parseInt(counter)< parseInt('<%=Model.StudentInfo.Count%>',10); counter++)
                      {
                        alert('<%=count%>');
                        if('<%=Model.StudentInfo[count].StudentName%>' == StudentName)
                        {
                          alert("A student with new student name already exists.");
                          return false;
                        }
                        <%count = count +1;%>
                      }
                    }
                }
    </script>

感谢, 卡皮尔

1 个答案:

答案 0 :(得分:1)

代码<%count = count + 1;%>只会在ASP.NET生成HTML页面时在服务器端执行一次。这就是它永远不会增加的原因。你不能在服务器端和客户端混合逻辑。

您可以考虑在JavaScript中使用Model.StudentInfo[i].StudentName中的数据构建数组,然后简单地遍历JavaScript数组:

var i;
var studentName = document.getElementById('txtStudentName').value;

// Prepare a 'StudentNamesString' in ASP.NET in the following format:
//
//    ['Student Name 1', 'Student Name 2', 'Student Name 3']
//
// And use it as follows:

var studentNamesOnServer = <%= StudentNamesString; %>;

studentName = studentName.replace(/^\s+|\s+$/g, '');

for (i = 0; i < studentNamesOnServer.length; i++) {
   if (studentNamesOnServer[i] === studentName) {
      alert('A student with new student name already exists.');
   }
}