ServiceStack (v3.9.44.0) を Windows サービス (.Net4.5 をターゲット) として使用しており、Razor を使用してServiceStack が HTML を生成および提供できるようにしています。
うまく機能しますが、奇妙な問題があります。ビュー内のハードコードされた Unicode 文字列.cshtml
が正しくレンダリングされていないようです。
これが私が意味することです:
プロジェクト ビューの構造は標準的です。
であること_Layout.cshtml
で:
<!doctype html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<p>Accents in \Views\_Layout.cshtml: à é ë ô</p>
@RenderBody()
</body>
</html>
とArticles.cshtml
:
@inherits ViewPage<List<PrepaService.Article>>
<p>Accents in \Views\Articles.cshtml: à é ë ô</p>
Table with code-injected list of items:
<table>
@foreach(var a in Model) {
<tr>
<td>@a.Description</td>
</tr>
}
</table>
どちらのファイルも、BOM なしの UTF8 ファイルとして適切に保存されます。
以下も追加しようとしましたが、何も変わりません:
SetConfig(new EndpointHostConfig {
AppendUtf8CharsetOnContentTypes = new HashSet<string> { ContentType.Html }
});
要約すると、次のようになります。
すべてのファイルに BOM なしの UTF8 エンコーディングを使用し、明示的な
charset=utf-8
コンテンツ タイプの定義を使用しています。これは、 でレンダリングされたもの
_Layout.cshtml
、およびビュー テンプレート内のコードによって挿入されたものすべてに対して機能します。ただし、ビュー テンプレートでハードコードされた文字列では機能しません。