Как сохранить состояние модели при перенаправлении на другое действие в ASP .NET MVC?
У меня есть домашний контроллер
public class HomeController : Controller
{
public ActionResult Index()
{
var m = new ModelClass
{
Prop1 = 1,
Prop2 = "property 2"
};
return View(m);
}
public ActionResult SubAction()
{
ModelState.AddModelError("key", "error message value");
return RedirectToAction("Index");
}
}
Модель:
public class ModelClass
{
public int Prop1 { get; set; }
public string Prop2 { get; set; }
}
и посмотреть:
@model MvcApplication9.Models.ModelClass
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@Html.TextBoxFor(m => m.Prop1)
@Html.TextBoxFor(m => m.Prop2)
@Html.ValidationMessage("key")
<br/>
@Html.ActionLink("action", "SubAction", "Home")
когда я нажимаю action
actionlink я ожидаю увидеть error message value
но когда я перенаправить из SubAction
в Index
действие ModelState
ошибки потеряны. Как я могу сохранить эти ошибки модели, установленные в SubAction
и отобразить их в виде, возвращенном Index
действие?
1 ответ
Решение
Если вы просто пытаетесь донести сообщение об ошибке, используйте TempData
:
TempData.Add("error", "I'm all out of bubblegum...");
Затем, в вашем другом действии или его представлении, вы можете использовать TryGetValue
:
object message = string.Empty;
if(TempData.TryGetValue("error", out message)
{
// do something with the message...
}