0

複数のフォームを含む 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)
});
4

1 に答える 1

0

解決策は、Telerik オブジェクトの.InputHtmlAttributesメソッドを使用することでした。

@Html.Telerik().DatePickerFor(m => m.SomeDate).InputHtmlAttributes(new { id = idString + "-SomeDate" })
于 2013-05-10T20:12:37.067 に答える