传递方法之间的错误

时间:2015-02-09 15:19:05

标签: asp.net-mvc asp.net-mvc-5 modelstate

我有两种方法 - GET和POST。 GET方法填写表单,POST方法向DB添加记录。有用。但有时POST方法会出错(无效数据,无法在客户端检查等),我再次调用GET方法。

GET方法:

public ActionResult VacancyForm(int? ID, VacancyFormViewModel model)
{
    if (model == null)
        model = new VacancyFormViewModel();

POST方法:

[HttpPost]
public ActionResult VacancyForm(VacancyFormViewModel model)
{
    if (surgeonSelected == null) // error case
    {
        return VacancyForm(null, model);
    }

问题 - 如何将所有错误从帖子传递给get?

2 个答案:

答案 0 :(得分:0)

您可以使用ModelState' AddModelError方法在服务器端添加它们,如下所示:

[HttpPost]
public ActionResult VacancyForm(VacancyFormViewModel model)
{

    if (surgeonSelected == null) // error case
    {
        ModelState.AddModelError("SurgeonSelected ", "An error has occurred");
        return VacancyForm(model);
    }
}

这可以通过以下方式显示:

@Html.ValidationMessage("SurgeonSelected ")

如果您使用的是强类型视图,则可以使用:

@Html.ValidationMessageFor(m => m.SurgeonSelected )

答案 1 :(得分:0)

您可以将其作为参数传递:

   public ActionResult VacancyForm(int? ID, VacancyFormViewModel model, string errorMessage = null)
   {
      if(errorMessage != null)
          ModeState.AddModelError("", errorMessage);

   }

[HttpPost]
public ActionResult VacancyForm(VacancyFormViewModel model)
{

    if (surgeonSelected == null) // error case
    {
        string error = "You error message";
        return VacancyForm(null, model, error);
    }
}