我正在使用PartialView来填充Bootstrap模式。我试图这样做,以便如果有错误,错误信息将显示在模态内,如果可能,模态不会消失。
下面是我有一个ActionResult的代码,它填充了一个视图模型,然后打开了PartialView。然后我将POST插入数据库。当出现错误时,我将其添加到ModelState错误中。然后,我在PartialView中检查是否有任何错误,如果是,则显示警报。
这里发生的错误是创建错误并将其添加到ModelState中,但它将PartialView显示为整个页面,因此不包含_Layout,并且HTML未使用CSS格式化。另外,就像我提到的那样,它在它自己的页面中,而不是在Modal中。
PartialView中的内部表单
if (ViewData.ModelState.Any(x => x.Value.Errors.Any()))
{
@Html.ValidationSummary(false, "", new { @class = "alert alert-danger" })
}
控制器代码
public ActionResult ClockAddIPAddress(int clockId, string clockName, string clockDescription)
{
var vm = new ClockIPAddressViewModel();
vm.ClockId = clockId;
vm.ClockName = clockName.Trim();
vm.ClockDescription = clockDescription.Trim();
return PartialView("_ClockAddIPAddress", vm);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ClockAddIPAddress(ClockIPAddressViewModel vm)
{
try
{
DAL.ClockAddIpAddress(vm);
return RedirectToAction("Clock_Detail", new { id = vm.ReaderId });
}
catch (Exception ex)
{
logger.Error("Error adding Clock IP Address. {0} | {1} | {2}", ex.Message, ex.StackTrace, ex.InnerException);
ModelState.AddModelError("Error", ex.Message);
return PartialView("_ClockAddIPAddress", vm);
}
}