MVC 视图不显示验证错误
本文关键字:验证 错误 显示 视图 MVC | 更新日期: 2023-09-27 18:36:01
我的MVC项目中有一些验证。但是,当我对一个空表单或尚未输入某些必填字段的表单求和时,它不会停留在同一表单/视图中并显示错误。我看不到任何模态错误(即金额是必填字段)
例如,这是我的模态中的一些属性
[Required]
[StringLength(1, MinimumLength = 1)]
public string Period { get; set; }
[Required]
[DataType(DataType.DateTime)]
public System.DateTime ModifyDate { get; set; }
这是我的控制器
[HttpPost]
public ActionResult StopScheduled([Bind(Prefix = "item")] BillPayModel model)
{
//getUsers();
try
{
if (ModelState.IsValid)
{
//save stuff into db
db.SaveChanges();
}
else
{
ModelState.AddModelError("", "Could not Stop Scheduled Payment");
}
}
catch (FormatException)
{
ModelState.AddModelError("", "Could not Stop Scheduled Payment");
}
return RedirectToAction("StopScheduled");
}
}
这是我的观点
@if (Model !=null)
{
if (Model.IsSuccess == true)
{
<span><center><font color = "green">Successfully Completed Transaction! </font></center></span>
}
else
{
@Html.ValidationSummary(true, "ERROR! Please make sure you have entered correct details");
}
}
@if (Model ==null)
{
using (Html.BeginForm("BillPay", "BillPay", FormMethod.Post, new {}))
{
@Html.ValidationSummary(true);
<div>@Html.LabelFor(model => model.AccountNumber)</div>
@Html.DropDownList("Accounts", "-- Select User --")
<div>@Html.LabelFor(model => model.PayeeID)</div>
@Html.DropDownList("PayeeID", "-- Select User --")
<div>@Html.LabelFor(model => model.Amount)</div>
<div>@Html.TextBoxFor(model => model.Amount,new {style = "width:150px"})
@Html.ValidationMessageFor(model => model.Amount)
</div>
<div>@Html.LabelFor(model => model.ScheduleDate) (i.e 20/10/2013 10:00)</div>
<div>@Html.TextBoxFor(model => model.ScheduleDate,new {style = "width:250px"})
@Html.ValidationMessageFor(model => model.ScheduleDate)
</div>
<div>@Html.LabelFor(model => model.Period)</div>
<div>@Html.TextBoxFor(model => model.Period,new {style = "width:150px"})
@Html.ValidationMessageFor(model => model.Period)
</div>
<input type="submit" value ="Submit" style="width:8%;height:5%"/>
<input type="reset" value ="reset" style="width:8%;height:5%"/>
}
}
else
{
}
问题是您正在使用 RedirectToAction 发出新请求,因此模型的验证设置为有效。要解决您的问题,您需要这样做:
[HttpPost]
public ActionResult StopScheduled([Bind(Prefix = "item")] BillPayModel model)
{
try
{
if (ModelState.IsValid)
{
//save stuff into db
db.SaveChanges();
}
else
{
ModelState.AddModelError("", "Could not Stop Scheduled Payment");
}
}
catch (FormatException)
{
ModelState.AddModelError("", "Could not Stop Scheduled Payment");
}
return View(model);
}
在视图中,您应该将 Html.ValidationSummary excludePropertyErrors 更改为 false,如下所示:
if (Model.IsSuccess == true)
{
<span><center><font color = "green">Successfully Completed Transaction! </font></center></span>
}
else
{
@Html.ValidationSummary(false, "ERROR! Please make sure you have entered correct details");
}
要在每个输入上显示它们,您需要更改 if 语句(Model==null)。