2

このユーザー コントロールにアポストロフィがエンコードされているのはなぜですか? Jquery テンプレートで問題が発生しています。アポストロフィは'、AJAX 要求からエンコードされています。

    <script type="text/html" id="editTimeTemplate">
        @Html.TextBoxFor(q => q.Time, new { type = "text", maxlength = 8, data_bind = "value: editTime.time.time, time: { options : { defaultTime: '8:00', showPeriod: true, showLeadingZero: false} }" })
    </script>
    <script type="text/html" id="editTimeTemplate">
    <input data-bind="value: editTime.time.time, time: { options : { defaultTime: &#39;8:00&#39;, showPeriod: true, showLeadingZero: false} }" id="Time" maxlength="8" name="Time" type="text" value="" />
</script>
4

1 に答える 1

4

内部的に、TextBoxFor は TagBuilder を使用し、すべての属性値に対してこのエンコードを行います。簡単な回避策は、ヘルパー メソッドではなく HTML タグを使用することです (私は MVC4 を使用しているため、IdFor メソッドと NameFor メソッドは自分で実装する必要があります)。


<input type="text" id="@Html.IdFor(m => m.Time)" name="@Html.NameFor(m => m.Time)" maxlength="8" data-bind="value: editTime.time.time, time: { options : { defaultTime: '8:00', showPeriod: true, showLeadingZero: false} }" />

またはもちろん:


<input type="text" id="Time" name="Time" maxlength="8" data-bind="value: editTime.time.time, time: { options : { defaultTime: '8:00', showPeriod: true, showLeadingZero: false} }" />

これが非常に気になる場合 (またはこれを頻繁に行う場合) は、独自の TexBoxFor 拡張メソッドを実装し、気に入らない動作をオーバーライドする方法に進みます。

于 2012-05-13T08:14:25.687 に答える