Частичный просмотр MVC для вызова всплывающего окна с использованием jquery

У меня есть индексная страница, которая отображает объекты из моей базы данных в виде дерева, каждый элемент имеет ссылку href="/MessageGroupType/Edit/1002, которая вызывает вызов Ajax для отображения частичного представления в DIV.

В частичном представлении есть кнопка удаления, которая вызывает мой контроллер для удаления элемента.

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

В моем частичном представлении «Редактировать» у меня есть следующий код

<asp:PlaceHolder runat="server">
        <script src="<%= Url.Content("../../Scripts/JQuery/jquery-1.4.1.min.js") %>" type="text/javascript">
        </script>
</asp:PlaceHolder>


<script type="text/javascript" >
     $(function() {
         $("#dialog").dialog();
     });

</script>

  <% if (Boolean.Parse(ViewData["DisplayWindow"].ToString())){%>
     <div id="dialog" title="Cannot Delete Message Group Type">
             <p>This Mesage group Type Cannot be deleted as is linked to other message group Types </p>
             </div>
     <% }%>

Итак, мои основные вопросы

  1. Могу ли я сделать ссылку на сценарий javascript в своем частичном представлении (я не хочу, чтобы моя главная страница вызывалась в частичном представлении)
  2. Когда я динамически загружаю данные частичного представления в свой DIV, могу ли я после вызова моего контроллера вставить другой DIV в первый DIV.
  3. Я делаю это неправильно, поэтому любые указатели приветствуются

Ваше здоровье


person Gavin campbell    schedule 22.04.2010    source источник


Ответы (1)


В древовидном представлении вы можете добавить Ajax.ActionLink с опцией OnFailure в AjaxOptions, которая будет указывать на ваш $("#dialog").dialog();

В вашем контроллере, если пользователь не может удалить запись, свяжите неверный код запроса (Response.StatusCode = (int)HttpStatusCode.BadRequest;) с вашим HttpResponse, поэтому будет вызываться ваша функция OnFailure (и отображаться всплывающее окно).

Не забудьте связать функцию OnSuccess с вашим Ajax.ActionLink, если запись была удалена.

person Gregoire    schedule 22.04.2010
comment
Привет. Извините, я должен был указать на это - у меня уже есть нечто подобное. У меня есть ссылка на действие ajax с подтверждением = Вы уверены, что хотите удалить отображение. При выборе «да» вызывается мой контроллер — и именно в этот момент я хотел бы, чтобы удаление перешло в мой контроллер — вызовет ли Onfailure функцию, которая мне нужна, даже если кнопка «ОК» была нажата, спасибо за ваш вклад. - person Gavin campbell; 22.04.2010