2

爲什麼此用戶控件會對撇號進行編碼?這是造成Jquery模板的問題。撇號從AJAX請求編碼爲'ASP.NET MVC用戶控件和正在編碼的撇號

<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擴展方法的途徑和覆蓋任何行爲,你不喜歡。