2013-07-08 103 views
-1

我有一個視圖,我想通過更改DropDownList來更改其數據。 一切工作正常,但視圖不與新的數據集合呈現。換句話說,當我將數據發佈到控制器中的操作方法時,它無法返回到查看狀態。 這裏是我的代碼:查看無法從控制器呈現

查看:

@model IEnumerable<Model.Params> 
    <table> 
     @foreach(var item in Model) 
     { 
     <tr> 
      <td> 
       @Html.DisplayFor(modelItem => item.Name) 
      </td> 
     </tr> 
     } 
    </table> 
    <div> 
     @(Html.Kendo().DropDownList() 
       .Name("datetime") 
       .DataTextField("DateText") 
       .DataValueField("DateText") 
       .Events(e => e.Change("datesChange")) 
       .DataSource(ds => ds.Read("Read_Intervals", "MyController")) 
      ) 
    </div> 

<script> 
    function datesChange() { 
     var value = $("#datetime").val(); 
     $.post("@Url.Action("Kq_Read", "MyController")" + "?date=" + value); 
    } 
</script> 

控制器:

public ActionResult Kq(string date) 
{ 
    IQueryable<Params> kq; 
    if (date != null) 
    {     
     var datetime = Convert.ToDateTime(date); 
     kq = db.Params.Where(p => p.LogDate == datetime); 
    } 
    else 
    { 
     var datetime = GetLatestInterval(); 
     kq = db.Params.Where(p => p.LogDate == datetime); 
    } 
    return View("Kq", kq); 
} 

[HttpPost] 
public ActionResult Kq_Read(string date) 
{ 
    var datetime = Convert.ToDateTime(date); 
    var kq = db.Params.Where(p => p.LogDate == datetime); 
    return View("Kq", kq); 
} 
+0

數據源(DS => ds.Read( 「Read_Intervals」, 「myController的」) - 你修改Read_intervals – Nanda

+0

沒有Read_Intervals只是填充的DropDownList我的問題是,搜索不能從打開(重新呈現)? Kq_Read控制器的操作方法 – Libertad

+0

請發佈整個視圖,在此處發佈的視圖中沒有表單並提交按鈕,因此不容易分辨問題出在哪裏。 – ataravati

回答

1

你需要做做返回的數據進行處理。當你提交一個AJAX請求時,你需要實現一個回調方法,該方法將獲取返回的數據並用它更新你的UI。這一切都在你身上,頁面不會自動爲你重新渲染。

$.post("@Url.Action("Kq_Read", "MyController")" + "?date=" + value, function (result) { 
    // do something with `result` 
}); 
+0

我希望在調用控制器操作方法後,整個視圖再次呈現。唐諾如何使用你的方法做到這一點! – Libertad

+0

然後,只需使用常規表單發佈。 AJAX的重點在於避免頁面刷新。 –