0

我正在尝试在控制器中发生错误时显示 jQuery 模型弹出窗口,并显示控制器尝试返回的相同视图。

现在我正在研究 Home/Index.cshtml控制器[HttpGet] Index()控制器方法。如果 Index() 方法中发生任何错误,则在视图 Index.cshtml 中显示 jQuery 弹出窗口。

我们怎么能做到这一点?

更新

作为@MelanciaUK,我已经这样实现了。

  @{
        if (!String.IsNullOrEmpty(ViewBag.errorsOccurred))
        {
           <text>
              <script type="text/javascript">
                  $(function () {
                      $.fancybox.open({
                              'content' : $("#divForm").html()
                   });
                });
              </script>
            </text>
         }
      }
       @using (Html.BeginForm())
       {
                          ----
                          ----
       }
        <div id="divForm" style="display:none">
            An error has occurred on the page.
        </div>

    @section Scripts {  
     @Scripts.Render("~/bundles/fancybox")
    }

.fancybox.open永远不会被调用并从执行中跳过@using (Html.BeginForm())。我只想表演fancybox。这里出了什么问题?

4

1 回答 1

0

当您使用Fancybox而不是jQuery UI Dialog时,我已经重写了我的答案。它已经在Visual Studio上进行了测试,并且运行良好。试一试:

控制器

public ActionResult Index()
{
    return View();
}

[HttpPost]
public ActionResult SubmitMyForm()
{
    // Forcing an error.
    ViewBag.errorsOccurred = "An error has occurred!";

    return View();
 }

剃刀视图(_Layout):

<link href="@Url.Content("~/Scripts/fancybox/jquery.fancybox.css")" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="@Url.Content("~/Scripts/fancybox/jquery.fancybox.pack.js")" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $("#divForm").fancybox();
    });
</script>

剃刀视图(索引):

@using (Html.BeginForm("SubmitMyForm", "Home", FormMethod.Post))
{
    <input type="text" name="myInput" id="myInput" />
    <button type="submit">Submit</button>
}

剃刀视图(SubmitMyForm):

@{
    if (!String.IsNullOrEmpty(ViewBag.errorsOccurred))
    {
        <text>
            <script type="text/javascript">
                $(function () {
                    $.fancybox.open({ "content": "@ViewBag.errorsOccurred" });
                });
            </script>
        </text>
    }
}

<div id="divForm"></div>
于 2013-07-24T15:15:50.307 回答