2013-04-22 36 views
0

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

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

现在这个作品大都不错,除了在页面的底部,自动生成的JavaScript是Telerik的放入模样:

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,但这是一个kludgy的方式来解决这个问题。

$(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) 
}); 

回答

0

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

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