我有一个 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)
});