2016-06-27 69 views
0

我正在使用datetimepicker,我想禁用控制器中的特定日期及其之前的所有日期。禁用特定的日期及其之前的所有日期

那么如何将日期从控制器传递给datetimepicker?

这里是我的意思是:

MRecord firstMR = db.MRecords.Where(x => x.AID == dSum.AircraftID).OrderBy(x => x.DateEntered).FirstOrDefault(); 

<script type="text/javascript"> 
    $(function() { 
     $('#datetimepicker5').datetimepicker({ 
      disabledDates: [ 
       // how do I disable all dates before and including firstMR.DateEntered? 
      ] 
     }); 
    }); 
    </script> 

是否有可能做这一切的看法?我正在使用剃须刀。

任何帮助表示赞赏。

UPDATE

我在Razor视图尝试这样的:

@{ 
    ViewBag.Title = "Create"; 
    var firstMR = new ALogSummary.Models.MRecord(); 

    using (var db = new AviationLogSummary.Models.ALogsEntities()) 
    { 
     firstMR = db.MRecords.Where(x => x.AID == Model.AID).OrderBy(x => x.DateEntered).FirstOrDefault(); 
    } 

} 



<div id="datetimepicker2" class="input-group date"> 
    @Html.EditorFor(model => model.Day, new { htmlAttributes = new { id = "Day", @class = "form-control" } }) 
    @Html.ValidationMessageFor(model => model.Day, "", new { @class = "text-danger" }) 
     <span class="input-group-addon"> 
      <span class="glyphicon glyphicon-calendar"></span> 
     </span> 
</div> 
<script type="text/javascript"> 
    $(function() { 
     $('#datetimepicker2').datetimepicker({ 
      format: 'MM/DD/YYYY HH:mm', 
      minDate: [@firstMR.DateEntered.Date] 
     }); 
    }); 
</script> 

当我调试,我收到此错误:

JavaScript的严重错误的行160,列49 in http://localhost:xxxxx/DSummaries/Create/7 \ n \ nSCRIPT1007:Expected']'

更新2

<div id="datetimepicker2" class="input-group date" > 
    @Html.EditorFor(model => model.Day, new { htmlAttributes = new { id = "Day", @class = "form-control", data_mindate = firstMR.DateEntered.Date } }) 
    @Html.ValidationMessageFor(model => model.Day, "", new { @class = "text-danger" }) 
    <span class="input-group-addon"> 
     <span class="glyphicon glyphicon-calendar"></span> 
    </span> 
</div> 

SCRIPT:

这是它自己的JS文件

$(function() { 
    $('#datetimepicker2').datetimepicker({ 
     format: 'MM/DD/YYYY HH:mm', 
     minDate: $(this).data('mindate') 
    }); 
}); 

的HTML输出是:

<input class="form-control text-box single-line valid" id="Day" type="datetime" data-val-required="This field is required!" data-val="true" data-mindate="05/28/2016 00:00:00" data-val-date="This field: must be a date." value="06/28/2016 09:07"></input> 

所以正确的思想被填充,但我的脚本不工作。

+0

为什么不直接使用'minDate'选项(并将其设置为'firstMR.DateEntered'的价值)? –

+0

@StephenMuecke我更新了我的问题。这是你的建议吗? –

+1

删除方括号('minDate'是一个值,而不是值的数组。 –

回答

1

而不是使用disabledDates选项,使用minDate选项,以防止用户minDate

$('#datetimepicker2').datetimepicker({ 
    format: 'MM/DD/YYYY HH:mm', 
    minDate: '@firstMR.DateEntered.Date' 
}); 

由于这个脚本是在外部js文件(和剃刀代码不会在外部文件解析之前选择日期),你可以通过你的元素上使用data-*属性的值

@Html.EditorFor(model => model.Day, new { htmlAttributes = new { data_mindate = firstMR.DateEntered.Date, @class = "form-control" } }) 

注意有没有需要包括id = "Day"因为这已经被添加通过EditorFor()方法(并且由于该脚本引用了具有id="datetimepicker2"的元素,因此您似乎无论如何都会发生拼写错误)。

然后在外部文件

var day = $('#Day') 
day.datetimepicker({ 
    format: 'MM/DD/YYYY HH:mm', 
    minDate: day.data('mindate') 
}); 
相关问题