MVC Async Postback&的RenderPartial

时间:2012-10-11 16:20:38

标签: asp.net-mvc-3 asynchronous postback renderpartial sitefinity-5

道歉,如果标题有点误导,我只是不确定如何去做。

好的,这是场景。我正在开发一个反馈mvc小部件,它位于Sitefinity 5.1网站中。这个小部件实际上只是当用户使用jquery悬停在feedbackLaunch标签上时显示的div。

查看/ WIDGET

@using (Html.BeginFormSitefinity())
{  
    <label for="feedbackLaunch">
        <span class="FeedbackHighlight feedbackLaunch">Feedback</span>
    </label>

    <div class="feedback">
    </div>

    <div class="FeedbackContent" style="display: none">
        <h1>Feedback</h1>
        <h2>I thought this page was:
            <br />
            <br />
            @Html.DropDownListFor(x => x.PageRatingId, new SelectList(Model.Rating, "PageRatingId", "PageRatingName"))
            <br /><br />
            Please give further detail:
            <br /><br />
             @Html.TextAreaFor(model => model.PageDetails, new { @style = "height: 100px;" })
              <br /><br />
       <input type="submit" value="Submit" />

        </h2>
    </div>

}

所以我在后台有一个渲染页面,现在弹出了这个反馈div。可爱。

然而,我现在想做的是做一个提交点击但不做回发,因为反馈div会消失。提交后,我基本上会显示一个新的div或视图,通知已发送的信息(将被发送到网络服务)。

这样做的最佳方法是什么?

我应该有两个部分视图,一个用于提交表单,另一个用于“谢谢”部分吗?

我已经提到了Sitefinity,以防万一有任何陷阱,因为它是CMS的一个新功能。

感激地收到任何指示。

2 个答案:

答案 0 :(得分:0)

如果你的“谢谢”没有任何动态生成的内容,那么只需激活一个AJAX调用一些控制器动作,当你得到一个200响应时,只需用一个新的替换div,谢谢你,所有使用JQUERY。

如果你确实需要在服务器上动态生成谢谢,那么激活ajax调用一个动作,该动作返回带有thank you消息的partial,再次使用jquery将原始div替换为响应的内容

答案 1 :(得分:0)

您可以将AJAX与jQuery一起使用。例如,给你的表单一个id,然后在你的视图中显示小部件后进行AJAXify:

$('#feedbackForm').submit(function() {
    $.ajax({
        url: this.action,
        type: this.method,
        data: $(this).serialize(),
        success: function(result) {
            alert('thanks for submitting your feedback');
            // TODO: hide the div containing the feedback form
        }
    });
    return false;
});