4

我有一个家庭控制器

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")

当我单击actionactionlink 时,我希望看到error message value,但是当我从重定向SubActionIndexaction时,ModelState错误会丢失。如何保存这些模型错误,设置在 中SubAction,并在视图中显示它们,由Index操作返回?

4

1 回答 1

5

如果您只是想获得一条错误消息,请使用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...
}
于 2012-12-30T08:57:46.950 回答