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拡張メソッドを実装するためのルートを行くと、あなたのすべての動作を無効になり好きではない。

関連する問題