我刚刚开始使用 <%Html.DevExpress()。DateEdit() 控制,我让它在我的ASP.Net MVC应用程序中正常工作。代码如下所示:
aspx页面:
<% Html.DevExpress().DateEdit(settings =>
{
settings.Name = "EndDate";
settings.Properties.NullText = "dd/MM/yyyy";
settings.Properties.EditFormat = EditFormat.Custom;
settings.Properties.EditFormatString = "dd/MM/yyyy";
settings.Properties.DisplayFormatString = "dd/MM/yyyy";
settings.Date = Model.EndDate;
settings.Width = 100;
}
).Render();
%>
在此代码上方,我在此文件中引用了我的javascript文件(DateChanges.js),我希望能够执行以下操作:
$(document).ready(function(){
$("#EndDate").change(function(){
//do whatever i want
});
})
我现在无法做到这一点因为使用firefox我可以看到这个datepicker分配值的实际文本框被命名为“EndDate_I”。所以我的问题是我怎样才能轻松实现这一点,因为我希望能够捕获此控件的更改事件并在jQuery中使用它?
答案 0 :(得分:7)
DevExpress MVC Extensions为客户端处理需求提供了自己的基础架构(请参阅http://help.devexpress.com/#AspNet/CustomDocument6908帮助主题以开始使用)。
必须处理客户端ASPxClientDateEdit.DateChanged事件,并通过客户端ASPxClientDateEdit.GetDate()方法检索新选择的Date。使用检索到的js Date对象满足您的其他需求:
<script type="text/javascript">
function OnDateChanged(s, e) {
var newDate = s.GetDate();
alert(newDate);
}
</script>
settings.Properties.ClientSideEvents.DateChanged = "OnDateChanged";
答案 1 :(得分:0)
在http://kennytordeur.blogspot.com/2011/05/aspnet-mvc-where-is-clientid_10.html讨论您的问题时,有一篇相当长的博客帖子
(我认为将它贴在这里很长,作者应该得到学分)
答案 2 :(得分:0)
继续你对Mikhails的回答的评论后,全局命名空间中将有一个属性,其中包含你的控件的名称,所以就像这样:
CalculateDayDifference(s.GetDate(), EndDate.GetDate());
所有mvc控件都执行此操作,对于某些人,您可能必须将EnableClientSideApi属性设置为开始使用它们。