I am new to MVC4. Here I added the ModelState.AddModelError message to display when the delete operation is not possible.
-
RedirectToAction
will clear ModelState
. You must return a view in order to use this data. Therefore, the first if
case won't work. Also, ensure that you have a control in your view (like ValidationSummary
) which displays the error... this could be the problem in the second case.
讨论(0)
-
The RedirectToAction method returns 302 which causes the client to be redirected. Because of this the ModelState is lost as the redirect is a new request. You could however, use the TempData property which allows you to store a temporary piece of data that is unique to the session. You could then check for this TempData on the other controller and add a ModelState error in that method.
讨论(0)
-
The ModelState
is created at each request so you should use TempData
.
public ActionResult Delete(string id, string productid)
{
int records = DeleteItem(id,productid);
if (records > 0)
{
// since you are redirecting store the error message in TempData
TempData["CustomError"] = "The item is removed from your cart";
return RedirectToAction("Index1", "Shopping");
}
else
{
ModelState.AddModelError(string.Empty,"The item cannot be removed");
return View("Index1");
}
}
public ActionResult Index1()
{
// check if TempData contains some error message and if yes add to the model state.
if(TempData["CustomError"] != null)
{
ModelState.AddModelError(string.Empty, TempData["CustomError"].ToString());
}
return View();
}
讨论(0)
- 热议问题