如何在MVC中的jQuery模式上显示错误消息

时间:2010-02-24 20:30:31

标签: c# jquery asp.net-mvc html-helper

我正在尝试使用jQuery模式通过ID查找员工。我的模态有一个用于员工ID的输入文本框和一个搜索按钮。单击搜索按钮后,我在数据库中查找了值,如果没有结果,我正在查找要在同一模态上显示的错误消息。

我的控制器看起来像这样:

  [AcceptVerbs(HttpVerbs.Post)]
    [ActionName("CreateEmpLookup")]
    public ActionResult CreateEmpLookupPost(string empIDSearch)
    {
        List<spGetEmployeeDataByEIDResult> res = new List<spGetEmployeeDataByEIDResult>(_service.GetUserFromDB(empIDSearch));
        if (res.Count > 0)
        {
            ViewData["Status"] = true;
            return RedirectToAction("Create", new { empID = empIDSearch });
        }
        else
        {
            ViewData["Status"] = "false";
            return Content("False");
        }
    }

我只是不确定如何将信息传回弹出模式,没有结果。我想我必须将这行return Content("False");替换为将返回jQuery弹出模式的消息。

在我的弹出模式中,我有以下行,它将显示任何错误消息:

<input type="hidden" id="Status" value="<%= (ViewData["Status"] == null) ? "true" : ViewData["Status"].ToString() %>" />

以下是我的jQuery代码片段:

$('#login_form').modal();

jQuery的目标:

<div id="login_form" style='display: none'>
    <div id="status" align="left">
        <center>
            <h1>
                <img src="../../Content/modal_images/Search48.png" alt="Key" id="modal_img" />
                <label id="modal_title">
                    Employee Search</label>
            </h1>
            <br class="modal_br" />
            <div id="login_response">
                <input type="hidden" id="Status" value="<%= (ViewData["Status"] == null) ? "true" : ViewData["Status"].ToString() %>" />
            </div>
        </center>
        <% using (Html.BeginForm("CreateEmpLookup", "", FormMethod.Post))
       { %>
        <form id="login" action="javascript:alert('success!');">
        <%--<input type="hidden" name="action" value="user_login" />
        <input type="hidden" name="module" value="login" />--%>
        <table class="modal_table">
            <tr>
                <td>
                    <label id="modal_label">
                        Employee ID:</label>
                </td>
                <td>
                    <%= Html.TextBox("empIDSearch", "", new { @maxlength = "6" })%>
                </td>
            </tr>
            <tr>
                <td>
                    &nbsp;
                </td>
                <td>
                    <input value="Search" name="Search" id="submit" type="submit" />
                    <div id="ajax_loading">
                        <img src="../../Content/modal_images/spinner.gif" alt="Processing" />&nbsp;Processing...
                    </div>
                </td>
            </tr>
        </table>
        </form>
        <% } %>
    </div>
</div>

关于如何使这个更容易或解决这个问题的任何建议都会有所帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

@GB,我可以想到几种方法来做到这一点。但是,如果您正在使用“模态”对话框,并且希望在那里显示它,则会限制您的选项。

如果您正在使用提交按钮进行发布,就像您看到的那样,那么在返回页面时,您需要再次显示弹出窗口,然后填写详细信息。

这样做的一个很好的方法可能是使用PartialViews(PV)。如果你得到一个结果然后你可以在PV上渲染,如果没有,那么你渲染另一个。不太好,但它会起作用。

最好的方法,恕我直言,是使用jQuery进行部分回发。然后你可以进行搜索,从部分帖子返回后,你可以渲染一个列表或错误。

因此;

  1. 允许用户输入搜索内容 标准
  2. 执行jQuery / AJAX调用 搜索
  3. 如果你失败,那么返回一个PV 包含您的错误并呈现它 致父母DIV。
  4. 如果你成功了,现在还不清楚 那你在做什么, 向用户显示另一个PV 详情/清单。
  5. AJAX回发可以返回PV。在这种情况下,返回值是html,可以简单地插入到Div或其他内容中。

    这是理想的,因为你没有得到恼人的屏幕闪烁效果。

    如果您需要代码示例,请发表评论,我会提供一些。