comment obtenir des données de cookie de vue, C# dans mvc3 à l'aide de Viewbag
C'est la première fois pour l'écriture de C# MVC. J'ai ajouter la ligne de la valeur de cookie et vous voulez qu'il genrate le nombre de lignes, mais je ne sais pas comment le faire.
Les gars si vous avez de meilleures solutions, je vais être apprécié. 🙂
Tout d'abord, Créez cookie
if (Request.Cookies["UserSettings"] != null)
{
HttpCookie myCookie = new HttpCookie("UserSettings");
myCookie["Row"] = "5";
myCookie.Expires = DateTime.Now.AddDays(1d);
Response.Cookies.Add(myCookie);
}
Deuxième, Lire Cookie, dans le Contrôleur de lire les lignes de cookie et ensuite l'envoyer par le biais de "Viewbag.RowCookie" pour afficher
if (Request.Cookies["UserSettings"] != null)
{
string userSettings;
if (Request.Cookies["UserSettings"]["Row"] != null)
{
userSettings = Request.Cookies["UserSettings"]["Row"];
ViewBag.RowCookie = userSettings;
}
}
return View();
Enfin, dans la Vue, Puis d'erreur s'affiche lors d'un clic de la page. (Remarque j'ai vérifié la valeur de ligne est bien dans une autre page.)
@{int row = 3 ;
row = (int)ViewBag.RowCookie; } //the problem is this line
@for (int i = 0; i < row ; i++)
{
<tr>
<td>
<p>
@Html.Label("Name")
@Html.EditorFor(model => model.Name[i])</p>
</td>
<td>
<p>
@Html.Label("Prob" + (i+1))
@Html.EditorFor(model => model.Prop[i])</p>
</td>
<td>
<p>
@Html.Label("Forecast" + (i+1))
@Html.EditorFor(model => model.Forecast[i])</p>
</td>
<td> <p>
@Html.DisplayFor(model => model.AxB[i])
</p>
</td>
<td> <p>
@Html.DisplayFor(model => model.PowAxB[i])
</p>
</td>
</tr>
Merci à vous tous pour votre aide.
- quel est l'erreur ?
- Il ne peut pas générer le code HTML, en raison de viewbag, je veux que les données à viewbag en "int" de type.
- vous pouvez utiliser @modèle IEnumerable<yourModel> ensuite une boucle sur elle en utilisant foreach
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas lancer une chaîne en entier en utilisant
(int) myString
Lors de la configuration de la ViewBag vous pourriez faire
alors c'est juste
int row = ViewBag.RowCookie;
dans la vue.Cela dit, sans savoir ce que vous êtes en train de faire, j'ai du mal à imaginer une circonstance où vous souhaiteriez utiliser un cookie et ViewBag comme ça. Si vous ne voulez pas utiliser les données dans un tableau passé un certain indice, que de les limiter à d'index lorsque vous créez votre viewmodel. Ensuite ta boucle for est juste
ou mieux, refactoring tous vos biens dans un IEnumerable collection
dans la vue de les limiter avec
Sur une note de côté pour:
êtes-vous sûr de ne pas dire
Request.Cookies["UserSettings"] == null
?