MVC3, le Rasoir à l'aide de viewbag dans le contrôleur et la vue
Je suis en train de créer des propriétés dynamiques pour mon viewbag basé sur un si/d'autre condition dans mon contrôleur. Ce que le viewbag affiche dépendra de ma logique dans le contrôleur. De mon point de vue, j'essaie d'appeler mon viewbag avec la syntaxe razor, mais rien ne nous rend à la page.
[HttpPost]
public ActionResult EditUser(vw_UserManager_Model edituser)
{
UserManager.Models.vw_UserManager_Model model = edituser;
int outcome = 0;
outcome = UserManager.DAL.EditUser(model);
if (outcome == 1)
{
ViewBag.Message = "Successfully edited user" + model.UserName;
ViewBag.Description = "Look below for full details.";
//ViewData["Message"] = "Successfully edited user" + model.UserName;
return RedirectToAction("showSuccess", model);
}
else
{
ViewBag.Message = "Failure";
return RedirectToAction("showFailure", model);
}
}
#region successErrorHandling
public ActionResult showError(List<string> ErrorMessage)
{
ViewBag.ErrorMessage = ErrorMessage[0];
return View("ErrorMessageView");
}
public ActionResult showSuccess(vw_UserManager_Model model)
{
return View("SuccessMessageeView", model);
}
J'ai mis deux propriétés pour viewbag, message et description. - Je faire une redirection en cas de succès ou de l'échec.
@model UserManager.Models.vw_UserManager_Model
<h2>@ViewBag.Message</h2>
<br />
<h4>@ViewBag.Description</h4>
<h2>
SuccessMessageeView</h2>
<br />
User Created:
@using (Html.BeginForm())
{
<ul>
<li> <b>@Html.Label("Username: ")</b>@Model.UserName</li>
<li> <b>@Html.Label("Salutation: ")</b>@Model.salutation</li>
<li> <b>@Html.Label("Firstname: ")</b>@Model.firstname</li>
<li> <b>@Html.Label("Lastname: ")</b>@Model.lastname</li>
<li> <b>@Html.Label("Email: ")</b>@Model.email</li>
<li> <b>@Html.Label("Group name: ")</b>@Model.group_name</li>
<li> <b>@Html.Label("Is active: ")</b>@Model.isactive</li>
</ul>
}
Dans mon point de vue, je puis appeler mon viewbag mais ne rend pas. Fais-je une erreur?
- Vous perdez de l'état de l'ViewBag avec la redirection. Merci de poster votre showSuccess et showFailure actions (et le nom de votre point de vue), afin de pouvoir proposer une solution.
- ok je vais modifier mon post.
- Je pense que j'ai mis mon viewbag dans le mauvais ActionResult méthode. 🙁
- Vous pouvez utiliser TempData au lieu de cela.. Il fonctionne vraiment, vous pouvez vous référer à ceci: dotnet-tricks.com/Tutorial/mvc/...
Vous devez vous connecter pour publier un commentaire.
Que Hari mentionné, parce que vous êtes de redirection, vous perdez le viewbag de données. Si vous souhaitez conserver des données entre les demandes, utilisation TempData à la place. Ce blog décrit ce TempData doit être utilisé pour.
S'il vous plaît ne pas utiliser ViewBag si il peut être mis dans le modèle de vue.
Viewbag devrait seulement être utilisé pour travailler avec lui sur la même page sur la vue.