更改Telerik DateTimePicker元素ID,但保留名称

时间:2013-04-22 18:23:48

标签: asp.net-mvc razor telerik

我有一个包含多个表单的ASP.NET MVC页面,其中每个表单编辑同一个类的不同实例。每个表单还包括Telerik DateTimePicker控件。我想要的是更改元素ID,而不是元素名称。所以我有这样的事情:

string idString = string.Format("MyObject{0}", Model.ID)
@Html.Telerik().DatePickerFor(m => m.SomeDate).HtmlAttributes(new { id = idString + "-SomeDate" })

现在这个工作大部分都很好,除了在页面底部,Telerik放入的自动生成的Javascript看起来像:

jQuery('#SomeDate').tDateTimePicker({
  format:'M/d/yyyy h:mm tt', 
  minValue:new Date(1899,11,31,0,0,0,0), 
  maxValue:new Date(2100,0,1,0,0,0,0), 
  startTimeValue:new Date(2013,3,22,0,0,0,0), 
  endTimeValue:new Date(2013,3,22,0,0,0,0), 
  interval:30, 
  selectedValue:new Date(2013,3,22,11,9,1,180)
});

请注意,我的idString值未输入。我可以尝试:

@Html.Telerik().DatePickerFor(m => m.SomeDate).Name(idString + "SomeDate")

这使得自动生成的Javascript正确(jQuery('#MyObject123-SomeDate')),但现在元素名称错误,因此TryUpdateModel失败。

我怎样才能让它发挥作用?感谢。

编辑:我使用以下Javascript攻击了这个,但这是修复此问题的一种方法。

$(function () {
    window.setTimeout(function () {
        for (var i = 0; i < document.getElementsByTagName("input").length; i++) {
            var obj = document.getElementsByTagName("input")[i];
            if (obj.id.indexOf("SomeDate") == -1)
                continue;
            obj.name = "SomeDate";
        }
    }, 150)
});

1 个答案:

答案 0 :(得分:0)

解决方案是使用Telerik对象的.InputHtmlAttributes方法。

@Html.Telerik().DatePickerFor(m => m.SomeDate).InputHtmlAttributes(new { id = idString + "-SomeDate" })