ajax形成并导致弹出窗口

时间:2012-02-01 10:41:51

标签: ajax asp.net-mvc

我在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 个答案:

答案 0 :(得分:1)

您可以在AJAX选项中订阅OnSuccess javascript事件,然后以您喜欢的方式显示您已检索到的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);
};