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 回答