无法在带有MVC的Bootstrap Modal中显示错误消息?

时间:2017-03-23 14:50:03

标签: c# asp.net-mvc twitter-bootstrap

我正在使用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);
    }
}

0 个答案:

没有答案