如何从视图中拉出的数组中的Kendo DatePicker中格式化日期



在ASP.NET MVC项目中使用Telerik的Kendoui DatePicker,该项目也使用实体框架。我正在为现有项目添加一个增强功能,以突出显示日期的记录在Oracle数据库中。

时。

在视图中:

@{
    var dateList = HelperMethodClass.GetRecordDates(model);
    var dateString = dateList.Aggregate("", (current, date) => current + (date.Equals(dateList.Last()) ? date.ToString("yyyy-MM-dd") : date.ToString("yyyy-MM-dd") + ","));
}

GetRecordDates()HelperMethodClass中的一种方法,该方法对所有日期询问数据库,并使用model传递的记录。我将其格式化,以便以后可以控制解析(见下文)。稍后在同一视图中的表中,DatePicker放置在表中,我存储dates变量以拉动其他.cshtml页面(该页面下方是在项目的视图 ->共享 -> EditorteMplates文件夹中):

<div class="leftActions">
    <input type="hidden" id="myDates" value="@dateString" />
    <table>
        <tr>
            <td>@Html.EditorFor(m => m.Date, new {@sourcePage = "MyView"})</td>
        <tr>
    </table>
</div>

这是另一个.cshtml页面:

@model DateTime?
@{
    var calendar = Html.Kendo().DatePickerFor(m => m).Format("yyyy-MM-dd");
    if (ViewData["sourcePage"] == "MyView")
    {
        calendar.Footer("<p>" + DateTime.Today.ToLongDateString() + "</p><span id="legend">Record Exists<span>");
        calendar.MonthTemplate("# if ($.inArray(+data.date, recordDates) != -1) { #" + "<div class="reportDate">" +
                               "</div>" + "# } #" + "#= data.value #");
    }
}
<span style="width: 6em">
    @calendar
</span>
<script>
    var dates = $('#myDates');
    var dateArray = dates.toString().split(',');
    var recordDates = d(dateArray);
    function d(x) {
        var myArray = [];
        for (var i = 0; i < x.length; i++) {
            myArray.push(new Date(x[i].substring(0, 4), x[i].substring(5, 7), x[i].substring(8)));
        }
        return myArray;
    };
</script>
<style>
    #legend, .reportDate {
         background-color:rgba(0,0,0,.2);
    }
     .reportDate {
         position: absolute;
         width: 32px;
         height: 28px;
     }
</style>

我相信我的问题是到达EditorteMplate文件时(实际创建了DatePicker的位置)。我对COD-BEHIND GetRecordDates()方法提出了突破点,以查看发生了什么。视图变量正常工作,并且EditorteMplate中的dates变量正在按预期从视图中拉出日期字符串,但这就是停止的位置。我尝试将

放在视图中,并在EditorteMplate中使用.innerhtml以将

的文本设置为等于dateArrayrecordDates变量,但是,在浏览器上启用了调试时,它显示出一个错误,显示出一个错误这两个变量是null。日历与页脚相处得很好,但是日期并未按预期突出显示。如果我将日期数组对JavaScript进行核对,则突出显示日期。我还尝试将查询创建的list直接传递到我的dates变量中,但结果是相同的。

我是Web App开发的新手,因此我想如果我了解在访问页面时如何解释和运行代码,则可以解决该问题。关于我如何从代码范围内创建的array的日期突出显示的任何想法?

我能够在我的一个观点中使您的代码工作(解释),但我必须对D()函数进行几个更改。

我更改了

var dates = $('#myDates');

to

var dates = $('#myDates').val();

myArray.push(new Date(x[i].substring(0, 4), x[i].substring(5, 7), x[i].substring(8)));

to

myArray.push(new Date(x[i].substring(0, 4), x[i].substring(5, 7) - 1, x[i].substring(8)).getTime());

,然后使用硬编码日期字符串为我工作:

@{
    var dateString = "2016-06-28,2016-06-29";
}

问题是没有.val(),记录日期不包含任何有效日期,并且没有.getTime()

$.inArray(+data.date, recordDates)

将数字日期与日期对象进行比较。

一旦我把它们都作为数字化,我的6月28日和29日都有灰色的盒子。

相关内容

  • 没有找到相关文章

最新更新