AJAX формы и результаты во всплывающем окне - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть форма в DoComment.ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DT.KazBilet.Objects.PublicationComment>" %>
<div class="wrap">
    <h4>Comment</h4>
    <%using (Ajax.BeginForm("DoComment", "Publication", new {id = Model.Publication.OID, parentId = Model.OID},new AjaxOptions()))
      {%>    
    <%=Html.TextAreaFor(x=>x.Text) %>    
    <%-- <textarea style="width: 100%; height: 152px;"></textarea>--%>
    <input type="submit" value="Publish" class="btn ok_btn" />
    <%}%>
</div>

Это действие моего контроллера:

public JsonResult DoComment(PublicationComment model, int id, int parentId)
        {
            PublicationRepository.SaveComment(User.Identity.Name,id, parentId, model.Text);

            return Json(new {
                 Message = "You comment on moderation"
                 });
        }

Я хочу, чтобы пользователь нажимал кнопку «Опубликовать», а затем отображал всплывающее окно, в которое будет записан текст с Message.
Можете ли вы помочь мне (некоторый код)?

Спасибо.

1 Ответ

1 голос
/ 01 февраля 2012

Вы можете подписаться на событие OnSuccess javascript в опциях AJAX и затем показать результат JSON, который вы получили, как вам нравится (новое окно, div, ...):

<% using (Ajax.BeginForm(
    "DoComment", 
    "Publication", 
    new { id = Model.Publication.OID, parentId = Model.OID },
    new AjaxOptions { OnSuccess = "onSuccess" })
) %>

и тогда вы бы определили функцию onSuccess javascript.В зависимости от того, используете ли вы jQuery или MicrosoftAjax, реализация этой функции может немного отличаться, а конкретнее - от способа получения результата JSON.

Например, если вы используете MicrosoftAjax (устарел сейчас):

var onSuccess = function(e) {
    var json = e.get_response().get_object();    
    alert(json.Message);
};

и если вы JQuery:

var onSuccess = function(json) {
    alert(json.Message);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...