为什么此用户控件会对撇号进行编码?它导致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: '8:00', showPeriod: true, showLeadingZero: false} }" id="Time" maxlength="8" name="Time" type="text" value="" />
</script>
答案 0 :(得分: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扩展方法,并覆盖你不喜欢的任何行为。