如何将错误消息显示为模态

Ale*_*ñas 2 c# asp.net-mvc jquery twitter-bootstrap

我正在尝试将错误消息显示为模态 boostrap ......消息发送正确,但部分视图加载为公共页面......(无模态)

我需要你的帮助来解决这个问题.. :)

return RedirectToAction("ShowError", new { sErrorMessage = "Error Message" });
Run Code Online (Sandbox Code Playgroud)

这是我的 ActionResult 'ShowError'

 public ActionResult ShowError(String sErrorMessage)
    {
        ViewBag.sErrMssg = sErrorMessage;
        return PartialView("ErrorMessageView");
    }
Run Code Online (Sandbox Code Playgroud)

我的 PartialView 'ErrorMessageView'

<div class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title">Error</h4>
        </div>
        <div class="modal-body">
          @ViewBag.sErrMssg
        </div>
        <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
        </div>
    </div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
Run Code Online (Sandbox Code Playgroud)

Den*_*els 5

您可以尝试以下解决方案:

  1. 而不是使用ViewBaguse TempData["sErrMsg"]- usingTempData保留当前后续 HTTP 请求中的值。
  2. 在控制器操作中 -TempData["sErrMsg"]如果满足特定条件,则设置为所需的错误消息。
  3. 在视图中 - 检查它是否TempData["sErrMsg"]具有值(包含错误)以及它是否用于Html.RenderPartial("ErrorMessageView", TempData["sErrMsg"]);将部分视图呈现为引导模式弹出窗口。

控制器:

public class ProductController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Save(string name)
    {
        if(String.IsNullOrEmpty(name))
            TempData["sErrMsg"] = "Product name cannot be empty";

        return View("Index");
    }

    public PartialViewResult ShowError(String sErrorMessage)
    {
        return PartialView("ErrorMessageView");
    }
}
Run Code Online (Sandbox Code Playgroud)

索引视图:

@using (Html.BeginForm("Save", "Product", FormMethod.Post, new { id = "myform" }))
{
    @Html.TextBox("name", null, new { style = "width:500px;" })
    <input type="submit" value="Add" />
}

@if (TempData["sErrMsg"] != null)
{
    Html.RenderPartial("ErrorMessageView", TempData["sErrMsg"]);
}
Run Code Online (Sandbox Code Playgroud)

部分错误视图:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />

<script type="text/javascript">
    $(function () {
        $('.modal').modal('show');
    });
</script>
<div class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title">Error</h4>
            </div>
            <div class="modal-body">
                @Model
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)