视图无法从Controller呈现

时间:2013-07-08 08:39:46

标签: asp.net-mvc asp.net-mvc-controller

我有一个视图,我想通过更改DropDownList来更改其数据。 一切正常,但View不会使用新的数据集进行渲染。换句话说,当我将数据发布到控制器中的动作方法时,它无法返回视图。 这是我的代码:

查看:

    @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);
}

1 个答案:

答案 0 :(得分:1)

您需要使用返回的数据执行执行某些操作。当您提交AJAX请求时,您需要实现一个回调方法,该方法将获取返回的数据并使用它或其他任何内容更新您的UI。这就是你的全部,页面不会自动为你重新渲染。

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