道歉,如果标题有点误导,我只是不确定如何去做。
好的,这是场景。我正在开发一个反馈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的一个新功能。
感激地收到任何指示。
答案 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;
});