1

TextBoxFor を使用して、MVC ビューでモデル ti 編集をバインドしています。

@Html.TextBoxFor(m => m.Company)

会社名が Andenæs (または Lønø のような北欧の名前) であると仮定すると、TextBoxFor はそれを以下のスクリーンショットのようにエンコードします。

解読問題

それを修正する方法は?

4

1 に答える 1

0

エンコードされた 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
    }
)
于 2013-06-07T09:46:35.170 に答える