1

抱歉,如果标题有点误导,我只是不知道该怎么做。

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

查看/小工具

@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 或视图,通知信息已发送(将被发送到 web 服务)。

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

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

我提到了 Sitefinity,以防万一涉及到任何问题,因为它是 CMS 的一项全新功能。

任何指点都感激不尽。

4

2 回答 2

0

如果您的“谢谢”没有任何动态生成的内容,那么只需对某个控制器操作进行 AJAX 调用,当您收到 200 响应时,只需将 div 替换为带有谢谢的新内容,全部使用 jQUery。

如果您确实需要在服务器上动态生成感谢,则将 ajax 调用触发到一个返回部分感谢消息的操作,并再次使用 jquery 将原始 div 替换为响应的内容。

于 2012-10-11T16:28:50.820 回答
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;
});
于 2012-10-11T16:30:24.147 回答