在Asp.net Mvc中点击按钮添加错误消息

时间:2017-09-06 17:12:21

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我在ASP.net mvc中使用错误消息时遇到问题。当用户点击保存时,即使没有输入任何内容,它仍然会将它们重定向到另一个页面,但如果没有输入任何信息,我想给他们一个错误。我希望它在客户端完成。这就是我迄今为止的目标

 [HttpPost]
    public ActionResult Finish(Student model, string finish)
    {
        if (!ModelState.IsValid)
        {
            ViewBag.error("No item was entered");
           return View(getStudent);
        }

        else (string.IsNullOrEmpty(finish))
        {
            //redirects to student record page when finish is clicked
            return RedirectToAction("StudentRecord");
        }

    }

这里会放错误信息

 <div class="col-md-offset-4 col-md-12"> <input type="button" value="Finish" name="Issue" margin="50px" onclick="location.href='@Url.Action("ViewIssue","Issue")' " class="btn btn-default" /> </div>

1 个答案:

答案 0 :(得分:0)

设置View以显示TempData,其工作方式与ViewBag相同,但如果您的Model.IsValid条件失败,则会通过重定向保留其数据。另外,在if条件中放置一个try / catch语句,以防万一。 另外,我建议您返回原始视图,以防用户以某种方式填写表单错误,这样他就可以修复它。

动作:

[HttpPost]
public ActionResult Finish([Bind(Include = "propertyName1,propertyName2,propertyName3")] Student model, string finish)
{
    if (ModelState.IsValid)
    {
        try {
            //do your logic here
            return RedirectToAction("StudentRecord");
        } catch (Exception ex) {
            TempData["errorMessage"] = "Error: " + ex.Message + " - " + ex.InnerException;
            //ViewBag.errorMessage = "Error: " + ex.Message + " - " + ex.InnerException;
            return View(model);
        }
    }
    else
    {
        TempData["errorMessage"] = "Error: Please fill the form correctly";
        return View(model);
    }
}

然后在你的视图中:

@model your_domain.Student

<span>
    @TempData["errorMessage"]
    //@ViewBag.errorMessage
</span>