Je peuplé ViewData
élément avec un tableau de questions afin que je puisse stocker les données JSON dans le stockage local:Comment faire une boucle par ViewData avec Javascript dans ASPX Voir
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];
}
Au cours des essais, je chargé le ViewData
dans la localstorage
comme celui-ci (codé en dur) pour le montant exact des questions:
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.
Dans la vue que je suis en train de charger dynamiquement maintenant le ViewData
dans le navigateur localstorage
comme celui-ci en utilisant 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>
Maintenant, cela m'a donné une erreur qu'il ne peut pas trouver i
, puisque nous « évadés » le code côté client. Donc je l'ai changé pour:
for (var i = 0; i < mod; i++) {
var s = <%=ViewData[%>i.toString()<%]%>;
localStorage.setItem(
"obj" + i.toString(),
JSON.stringify(<%=ViewData[%>i.toString()<%]%>));
};
C'est la partie où je suis bloqué. Je continue de recevoir ces erreurs sur cette ligne:
JSON.stringify(<%=ViewData[%>i.toString()<%]%>));
Error 7 Invalid expression term ';'
et
Error 8 ; expected
et quand je lance l'application web c'est tout ce que je me inspecter sur l'élément:
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:
};
Y at-il un moyen d'échapper les balises <%%>
, dans le javascript à nouveau pour t La variable javascript à utiliser dans ViewData? Ou une autre façon de le faire?
MISE À JOUR: je suis allé et a joué avec le code un peu plus, ce qui est le plus proche, je l'ai appris à ce que je dois arriver en faisant comme ceci:
$(function() {
<% for (int i = 0; i < 1; i++){%>
<%="localStorage.setItem('obj" + i.ToString() + "',JSON.stringify('"%><%=ViewData[i.ToString()]%>"'))"
<%}%>
});
Donc cela ne boucle à travers mes questions et mettre la valeur là où je devais, mais la dernière question que j'ai est que maintenant d'avoir à mettre le javascript dans les citations:
<%="localStorage.setItem('obj" + i.ToString() + "',JSON.stringify('"%><%=ViewData[i.ToString()]%>"'))"
la dernière guillemet est nécessaire pour fermer la chaîne entre le <%%>
marque s. mais cette guillemet me donne l'erreur:
Invalid or unexpected token
comme mon javascript pour stocker le localstorage
ressemble à ceci maintenant:
localStorage.setItem("obj1", JSON.stringify("my json query"))" //this quotation is the problem
Toute aide ou de l'aide sera grandement appréciée.