0

日付ピッカー コントロールを含むビューと、ページ上のいくつかの部分ビューがあります。日付は、コントローラーの ViewData でデフォルトで今日の日付に設定され、ページの読み込み時に表示するために使用されます。ユーザーが日付ピッカーで日付を変更した場合、選択した値を Jquery 変数からコントローラーの ViewData に渡し、すべての部分ビューを更新するにはどうすればよいですか?

4

2 に答える 2

0

@トニー、返信ありがとうございます。jquery変数をviewdataに渡したいという間違った方法で入れました。つまり、jquery変数(datepickerで選択された値)に基づいているため、部分ビューをリロードする必要があります。私はAjaxでそれをしなければなりません.これは私がJavascriptで従った手順です:

    $(function () {
        $('#datePickerID').datepicker({
        onSelect: function (dateText, inst) {
        $.post('<%=Url.Action("GetControllerActionResult","ControllerName") %>',
        { parameter1: dateText },
        function (rawdata) {
        var data = $.parseJSON(rawdata);
$('htmlID or className of your partial view').html(data.dataString); //rendering your partial view
}
        );
}
        });;

コントローラーで:

 public ActionResult GetControllerActionResult(dataType parameter1) {
    ViewData["someValue"] = parameter1;
    ViewData["yourPartialViewObject"] = perform some action...

    var data = new Dictionary<string, object>();
    data.Add("dataString", this.RenderViewToString("partialViewName", ViewData["yourPartialViewObject"]));
    return Content(GetJSONString(data));
    }
于 2012-05-16T19:33:16.747 に答える
0

日付ピッカー コントロールは、ユーザーが日付を選択するのに役立つ JavaScript が関連付けられた単なる HTML 要素です。これは完全にクライアント側であるため、ブラウザ (IE、Firefox、Chrome など) 上で実行されます。ViewData は、サーバー側のコード (C# など) によってコントローラー アクションに入力できる一時的なストアであり、クライアント ブラウザーに送信される HTML 応答を生成するためにビュー内で使用されます。したがって、jQuery 変数を ViewData に渡すことはできません。意味がありません。

パーシャルによって生成されたページの部分を更新する場合は、いくつかのオプションがあります。

(a) コントローラー アクションに日時を渡すポストバックを実行し、ページ全体を更新します (非常に単純ですが、実行しようとしている内容によっては、ユーザー エクスペリエンスが向上しない場合があります)。

(b) Ajax を使用して、必要なページのセクションを更新します (より複雑になりますが、より良いユーザー エクスペリエンスを提供できます)。

于 2012-05-16T10:07:35.490 に答える