2

Почему этот пользовательский элемент управления кодируется апострофами? Это вызывает проблемы с шаблонами JQuery. Апопроф кодируется до ' по запросу AJAX.ASP.NET MVC User Control и Apostrophe, закодированные

<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

Внутренне 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 и переопределить любое поведение, которое вы не нравится.

Смежные вопросы