2014-03-28 35 views
2

我正在使用Telerik DatePicker的项目。该应用程序切换通过共享相同的字段名称的部分视图。 DatePicker要求Name()指定的名称是数据模型中字段的名称。 (据我可以告诉调用。价值(Model.DataField)是多余的。)Telerik DatePicker ID与局部视图冲突

@(Html.Telerik().DatePicker() 
    .Name("DataField") 
    .ShowButton(true) 
    .Value(Model.DataField)) 

什么情况是,控制与数据字段的ID创建。因此,对于相同字段名称的两个部分,有两个相同的ID。一个工作(显示第一个),另一个死了。

我已经尝试将.HtmlAttributes(new { id="DataField_wrapper" })添加到阵容中,但它不会更改有问题的ID。

<div class="t-widget t-datepicker" id="DataField_wrapper"> 
    <div class="t-picker-wrap"> 
     <input class="t-input" .... id="DataField" name="DataField" type="text"> 

使用jQuery通过#DataField抢要素,一是将有一个.data("tDatePicker")和对方不会:此ID在一个包装控制dev的显示出来。

是否有一个体面的方式来获得这两个控件的工作?

+0

为什么您需要在2个部分视图中使用相同的DatePicker?你不能改变你的模型有这种情况下的2日期属性? – darkchico

+0

页面从两个不同的模型中拉出,每个模型都有一个StartDate字段(例如)。每个都是由它自己的部分显示,但不是在同一时间;然后还有一个用于创建新记录的弹出部分,并且还会显示StartDate。我已经在模型中独辟蹊径地重新命名了字段,并且如果这是唯一的解决方案,可以使用这个强力路线。看来应该有更好的方式来包装它。 – jltrem

+0

如果更改名称,是否会影响标记的名称,或者只是它的ID?我想知道属性是否由值字段控制。 你有没有试过DatePickerFor作为替代? – B2K

回答

2

调用HtmlAttributes来设置id设置包装div的值。 InputHtmlAttributes是需要的!这会影响实际的输入控制,因此可以分配唯一的id

@(Html.Telerik().DatePickerFor(x => Model.DataField) 
    .InputHtmlAttributes(new {id="UniqueID"})) 

这产生了:

<div class="t-widget t-datepicker"> 
    <div class="t-picker-wrap"> 
     <input class="t-input" .... id="UniqueID" name="DataField" type="text"> 

并根据需要工作。