Как отобразить сообщение об ошибке на jQuery модальный в MVC - PullRequest
0 голосов
/ 24 февраля 2010

Я пытаюсь найти сотрудника по его идентификатору, используя модальное jQuery. Мой модал имеет текстовое поле для ввода идентификатора сотрудника и кнопку поиска. Когда нажата кнопка поиска, у меня есть значение, которое ищется в БД, и если результата нет, я ищу сообщение об ошибке, которое будет отображаться на том же модале.

Мой контроллер выглядит так:

  [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();

И div, на который нацелен 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 голосов
/ 26 февраля 2010

@ GB, я могу придумать пару способов сделать это. Однако, если вы используете модальное диалоговое окно и хотите отобразить его там, это как бы ограничивает ваши возможности.

Если вы создаете сообщение с помощью кнопки «Отправить», которая выглядит так, как вы, то при возврате на страницу вам нужно снова отобразить всплывающее окно и затем заполнить данные.

Один изящный способ сделать это - использовать PartialViews (PV). Если вы получите результат, вы можете сделать рендеринг на PV, а если нет, то вы получите другой. Не здорово, но это сработало бы.

Лучший способ, IMHO, это использовать jQuery для частичной обратной передачи. Затем вы можете выполнить поиск, а по возвращении из частичного поста назад вы можете отобразить либо список, либо ошибку.

Итак,

  1. Разрешить пользователю войти в поиск Критерии
  2. Сделайте вызов jQuery / AJAX, чтобы сделать поиск
  3. Если не получится, верните PV, который содержит вашу ошибку и сделать это к родительскому DIV.
  4. Если вам это удастся, и это не ясно что вы делаете в этот момент, показать другой PV с пользователем детали / Список.

Постбэк AJAX может вернуть PV. В этом случае возвращаемым значением является html, который можно просто вставить в Div или что-то еще.

Это было бы идеально, поскольку вы не получаете раздражающий эффект мерцания экрана.

Если вам нужны примеры кода, оставьте комментарий, а я вам предоставлю.

...