我在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>
答案 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>