1

タイトルが少し誤解を招く場合は申し訳ありません。これを行う方法がわかりません。

これがシナリオです。Sitefinity 5.1 Web サイトに格納されているフィードバック mvc ウィジェットを開発しています。このウィジェットは事実上、ユーザーが jquery を使用して feedbackLaunch ラベルにカーソルを合わせたときに表示される単なる div です。

ビュー/ウィジェット

@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 サービスに送信されます)。

これを行うための最良のアプローチは何ですか?

1 つは送信フォーム用、もう 1 つは「ありがとう」セクション用の 2 つの部分ビューを使用する必要がありますか?

Sitefinity について言及したのは、これが CMS の非常に新しい機能であることを考えると、それに関連する落とし穴がある場合に備えてです.

感謝して受け取ったポインタ。

4

2 に答える 2

0

jQueryでAJAXを使用できます。たとえば、フォームに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 に答える
0

「ありがとう」に動的に生成されたコンテンツがない場合は、コントローラーアクションへの AJAX 呼び出しを起動し、200 応答が返されたら、div を新しいものに置き換えて、すべて jQUery を使用して感謝します。

サーバー上でお礼を動的に生成する必要がある場合は、感謝メッセージを含むパーシャルを返すアクションへの ajax 呼び出しを起動し、もう一度 jquery を使用して元の div を応答の内容に置き換えます。

于 2012-10-11T16:28:50.820 に答える