0

我有一個帶有datepicker控件的視圖和幾頁局部視圖。默認情況下,日期在控制器的ViewData中設置爲當天日期,並用於在頁面加載時顯示。當用戶更改日期選擇器中的日期時,如何將所選值從Jquery變量傳遞給Controller的ViewData並更新所有部分視圖?將DatePicker值傳遞給控制器​​和視圖

回答

0

日期選取器控件只是一個HTML元素,它具有一些關聯的javascript來幫助用戶選擇日期。它完全是客戶端,這意味着它在瀏覽器上運行(例如IE,Firefox,Chrome)。 ViewData是一個臨時存儲,可以由控制器操作中的服務器端代碼(例如C#)填充,然後在視圖中使用,以生成將發送到客戶端瀏覽器的HTML響應。因此,您無法將一個jQuery變量傳遞給ViewData,它只是沒有意義。

如果要更新由部分生成的頁面部分,您有幾個選項。 (a)做一個回傳,將日期時間傳遞迴控制器動作並刷新整個頁面(非常簡單,但可能無法提供良好的用戶體驗,具體取決於您要做什麼)。 (b)使用Ajax更新您想要的頁面部分(更多參與但可以提供更好的用戶體驗)。

0

@Tony,謝謝你的回覆。我把它放在一個錯誤的方式,我想通過jQuery變量viewdata,我的意思是基於jquery變量(datepicker選擇值),我不得不重新加載部分視圖。 我必須這樣做,在阿賈克斯,這是我跟了 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)); 
    } 
相關問題