2013-07-08 7 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

DataSource (DS => ds.Read ("Read_Intervals", "MyController") - не вы модификации Read_intervals – Nanda

+0

не Read_Intervals просто заполнит DropDownList моя проблема заключается в том, что View не может быть открыт (Rerendered) из?. Kq_Read метод действия контроллера. – Libertad

+0

Пожалуйста, опубликуйте весь View. В представлении View, опубликованном здесь, нет формы и кнопки отправки, поэтому нелегко сказать, где проблема. – ataravati

ответ

1

Вам нужно сделать сделать что-то с возвращенными данными. Когда вы отправляете запрос AJAX, вам необходимо внедрить метод обратного вызова, который будет принимать возвращенные данные и обновлять ваш пользовательский интерфейс с ним или любым другим. Это все на вас, страница не просто автоматически повторно отображает для вас.

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

Я хочу, чтобы после вызова метода действия контроллера весь вид снова отображался. Donno как это сделать, используя свой подход! – Libertad

+0

Тогда просто используйте регулярную почтовую форму. Весь смысл AJAX заключается в том, чтобы избежать обновления страницы. –

Смежные вопросы