2017-08-14 83 views
0

我已填充ViewData项目有疑问的阵列,这样我可以存储在本地存储JSON数据:如何通过ViewData的循环使用Javascript在ASPX查看

string[] jsonQuestions = new string[StudentExam.QuestionCount]; 

      for (int i = 0; i < StudentExam.QuestionCount; i++) 
      { 
       jsonQuestions[i] = new JavaScriptSerializer().Serialize(StudentExam.QuestionsE[i]); 

       ViewData[i.ToString()] = jsonQuestions[i]; 
      } 

在测试过程中我装了ViewData进入localstorage像这样(硬编码)为题的具体数额:

  localStorage.setItem("obj0", JSON.stringify(<%=ViewData["0"]%>)); 
      localStorage.setItem("obj1", JSON.stringify(<%=ViewData["1"]%>)); 
      localStorage.setItem("obj2", JSON.stringify(<%=ViewData["2"]%>)); 
      localStorage.setItem("obj3", JSON.stringify(<%=ViewData["3"]%>)); 
      //...etc. 

在视图我想现在动态的ViewData加载到浏览器localstorage这样使用JavaScript :

<script> 

     var mod = "<%=Html.Raw(Model.TotalNumberOfQuestionsForTest.ToString())%>"; 


     for (var i = 0; i < mod; i++) { 

      localStorage.setItem(
       "obj" + i.toString(), 
       JSON.stringify(<%=ViewData[i.toString()]%>)); 

     }; 
    </script> 

现在,这给了我一个错误,它无法找到i,因为我们“逃脱”的客户端代码。所以我把它改为:

for (var i = 0; i < mod; i++) { 

      var s = <%=ViewData[%>i.toString()<%]%>; 

      localStorage.setItem(
       "obj" + i.toString(), 
       JSON.stringify(<%=ViewData[%>i.toString()<%]%>)); 

     }; 

这是我卡在的部分。我不断收到这条线以下错误:

JSON.stringify(<%=ViewData[%>i.toString()<%]%>));

Error 7 Invalid expression term ';'

Error 8 ; expected

,当我运行的Web应用程序,这是我得到的检查元素:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS1525: Invalid expression term ')'

Source Error:

Line 278: localStorage.setItem(Line 279:
"obj" + i.toString(), Line 280:
JSON.stringify(<%=ViewData[%>i.toString()<%]%>)); Line 281: Line 282:
};

有没有办法将<%%>标签转换成javascript的t他的JavaScript变量在ViewData中使用?或者另一种方式来做到这一点?

更新: 我去上,并与码多一点发挥各地,这是我已经得到了我所需要的做像这样的事情发生在最近:

$(function() { 

      <% for (int i = 0; i < 1; i++){%> 
     <%="localStorage.setItem('obj" + i.ToString() + "',JSON.stringify('"%><%=ViewData[i.ToString()]%>"'))" 

      <%}%> 

     }); 

因此这并循环通过我的问题,并把在我需要的地方价值,但最后一个问题我是,现在不得不把在报价中的javascript:

<%="localStorage.setItem('obj" + i.ToString() + "',JSON.stringify('"%><%=ViewData[i.ToString()]%>"'))" 

需要的最后一个引号关闭<%%>之间的串标签秒。但这个引号是给我的错误:

Invalid or unexpected token

为我的javascript存储localstorage看起来像现在这样:

localStorage.setItem("obj1", JSON.stringify("my json query"))" //this quotation is the problem 

任何援助或帮助将不胜感激。

回答

0

我终于解决了这个问题。要带的问题是,我是“字符串化”的字符串的那一刻我删除了单引号从代码:

$(function() {  
      <% for (int i = 0; i < Model.TotalNumberOfQuestionsForTest; i++){%> 
      <%="localStorage.setItem('obj" + i.ToString() + "',JSON.stringify("%> 
      <%=ViewData[i.ToString()]%> 
      <%="))"%> 
      <%}%> 

json对象被成功存储在浏览器的localstorage