TextBoxFor を使用して、MVC ビューでモデル ti 編集をバインドしています。
@Html.TextBoxFor(m => m.Company)
会社名が Andenæs (または Lønø のような北欧の名前) であると仮定すると、TextBoxFor はそれを以下のスクリーンショットのようにエンコードします。
それを修正する方法は?
TextBoxFor を使用して、MVC ビューでモデル ti 編集をバインドしています。
@Html.TextBoxFor(m => m.Company)
会社名が Andenæs (または Lønø のような北欧の名前) であると仮定すると、TextBoxFor はそれを以下のスクリーンショットのようにエンコードします。
それを修正する方法は?
エンコードされた TextBoxFor
あなたは混乱TextBoxFor
していLabelFor
ます。ヘルパー (ここLabelFor
で使用しているもの) は、モデル プロパティの値を HTML ページに直接出力するだけです。これを安全に行うには、この値を HTML でエンコードする必要があります。これがあなたがこれを見ている理由ですAndenæs
。これは安全で、ブラウザは正しくレンダリングします。HTML は、人間ではなくブラウザーによって読み取られ、解釈されることを意図しているため、ブラウザーを見ている人間が正しいテキストを見ている限り、これはまったく問題ありません。
これは、組み込みヘルパーのこの動作を変更する方法がないと言われています。それを実現する必要がある場合は、カスタム ヘルパーを作成し、すべてを手動でエンコードする必要があります (まったくお勧めできません)。
アップデート:
コメント セクションで示した内容によると、TextBoxFor ヘルパーを使用していません。入力フィールドをハードコーディングし、値を誤ってエンコードしたカスタム エディター テンプレートを使用しています。
<input type="text" class="string @ViewData.ModelMetadata.PropertyName" value="@ViewData.TemplateInfo.FormattedModelValue" name="@string.Format("{0}-{1}", ViewData.ModelMetadata.ContainerType.Name, ViewData.ModelMetadata.PropertyName)" id="@ViewData.TemplateInfo.HtmlFieldPrefix" dafault-value="@ViewData.ModelMetadata.DisplayName" />
一方、値が適切にエンコードされていることを確認するには、TextBox ヘルパーを使用する必要がありました。
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
new {
id = ViewData.TemplateInfo.HtmlFieldPrefix,
@class = "string " + ViewData.ModelMetadata.PropertyName",
dafault_value = ViewData.ModelMetadata.DisplayName
}
)