【问题标题】:asp.net mvc 4 Filter table using Datepickerasp.net mvc 4 使用 Datepicker 过滤表
【发布时间】:2013-03-02 08:51:30
【问题描述】:

当点击日期选择器中的日期时,我正在尝试过滤表格。我所做的是使用 $.get 将单击的日期作为 JSON 发送到我的控制器,然后使用 linq 过滤表,然后返回带有过滤表的视图作为我的模型。我使用 firebug 来检查响应,它向我显示了正确的 html,其中包含与单击日期匹配的表格,但它没有显示在浏览器中。我该如何解决这个问题?

$("#adminCalendar").datepicker({
    onSelect: function (date) {
        $.get("/Administrator/DateFilter", { "date": date }, null);
    }
});

控制器:

    public ActionResult DateFilter(string date)
    {
        var dateTime = Convert.ToDateTime(date).ToShortDateString();

        var transactions = (from transaction in db.Transactions
                           select transaction).ToList();


        var tran = from transaction in transactions
                   where transaction.OccassionDate.ToShortDateString() == dateTime
                   select transaction;


        return View("Index", tran);
    }

【问题讨论】:

  • 检查我的编辑。谢谢

标签: ajax asp.net-mvc datepicker


【解决方案1】:

当您通过 AJAX 请求某些内容时,您应该做一些响应。在您的情况下,您可以执行以下操作:

$.get("/Administrator/DateFilter", { "date": date }).done(function (result) {
    $('#myDiv').html(result);
});

$('#myDiv').load("/Administrator/DateFilter", { date: date });

您还应该添加 ID 为 myDiv 的元素,以显示您的请求结果。

<div id="myDiv"></div>

并将控制器中的结果从 View 更改为 PartialView 以避免发送带有布局的结果。

您也可以将 ajax 请求更改为window.location = '/Administrator/DateFilter?date=' + date。在这种情况下,您可以保留操作方法的 View 结果,并且不需要添加 myDiv 元素。

【讨论】:

  • 但是对于第一个解决方案,它应该是局部视图!否则整个页面将再次显示在该 div 中。
  • 谢谢。但是我必须在 load() 之前使用 .html('') 才能工作。而且我的智能感知中也没有 done 方法?
  • 我不知道你用的是什么版本的jQuery,但是done已经在1.5版本中添加了:api.jquery.com/deferred.done
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
  • 2015-09-16
  • 2018-08-09
相关资源
最近更新 更多