ASP.NET CoreRazorビューのUnicode正規化フォームC

シャ

ASP.NET Core 2.2 Razor ViewでW3C検証行っていますが、W3Cで警告が表示されます。

警告:名前空間http://www.w3.org/1999/xhtmlの要素imgの属性altの値は、Unicode正規化フォームCではありません。

警告:名前空間http://www.w3.org/1999/xhtmlの要素imgの属性titleの値は、Unicode正規化フォームCではありません。

私のデータはMSSQLデータベースに保存され、nvarcharその他はすべてUTF-8に設定されています。

コントローラ

    using Dapper;
    using System;
    using System.Data;
    using System.Data.SqlClient;

    public class FileViewModel
    {
        public int FileId { get; set; }
        public string Title { get; set; }
        public string Source { get; set; }
    }

    private async Task<FileViewModel> LoadFileAsync(int id)
    {
        using (SqlConnection conn = new SqlConnection("Conn-string-here"))
        {
            const string sql = "SELECT * FROM dbo.Files WHERE FileId=@Id";

            var data = await conn.QueryAsync<FileViewModel>(sql, new { id }).ConfigureAwait(false);
            return data.FirstOrDefault();
        }
    }

    [Route("~/file/{id}")]
    public async Task<IActionResult> File(int id)
    {
        FileViewModel m = await LoadFileAsync(id).ConfigureAwait(false);
        Return View(m);
    }

かみそりの眺め

@model FileViewModel

<img src="@Model.Source" alt="@Model.Title" title="@Model.Title" />

出力

<!DOCTYPE html>
<html lang="da">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Title</title>
    <meta name="description" content="my description" />
    <meta name="keywords" content="my keywords" />
</head>
<body>

<!-- Auto generated from database: -->
<img src="https://example.org/img.png" alt="Fora&#x30A;r" title="Fora&#x30A;r" />

</body>
</html>

W3Cは文字列"Fora&#x30A;r"好きではないようですが、"Forår"代わりに必要です。

ASP.NET Core Razorビューに適切なフォーマットを生成させるにはどうすればよいですか?

キャラクターを表現する方法は2つありますå

  1. UnicodeコードポイントU + 00E5(上にリングが付いたラテン小文字A)を使用します。

  2. 2つのコードポイントU + 0061(ラテン小文字A)とU + 030A(上記のリングの組み合わせ)の組み合わせを使用します。

視覚的には区別できません。また、HTMLとは関係ありません。HTMLは、直接(UTF-8、UTF-16を使用またはエスケープされたバージョン(など&#x30A;を使用して、両方のバージョンを表すことができます

あなたの場合、表現する2番目の方法åが使用されます。

この曖昧さを管理するために、ユニコードは、4つの有している正規形CDKC、およびKDを

Unicode正規化は、C#、より具体的にはString.Normalizeでもサポートされています

したがって、警告を取り除くために、タイトルを正規化します。

[Route("~/file/{id}")]
public async Task<IActionResult> File(int id)
{
    FileViewModel m = await LoadFileAsync(id).ConfigureAwait(false);
    m.Title = m.Title.Normalize(NormalizationForm.FormC);
    return View(m);
}

長期的には、データベースに保存する前に、すべての文字列を正規化することをお勧めします。同じテキストを異なるコードポイントシーケンスで表すことができる場合、データベースクエリでも問題が発生します。そして、ほとんどのデータベースは文字列を正規化することができません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ASP.NET CoreRazorビューでの再帰

分類Dev

ASP .NET CoreRazorページでの承認

分類Dev

同じビュー上の複数のフォーム(asp.net mvc)

分類Dev

ASP.NETフォームのWacom署名

分類Dev

asp.net c# フォーマットされた数値の正規表現バリデーター

分類Dev

Asp.Net CoreRazorページでのリモート検証

分類Dev

ASP.net Webフォーム-動的フォーム-C#

分類Dev

ASP.NET MVC C#でのフォームの検証

分類Dev

asp.net Webフォームのグリッドビューから「foreach」イベントを最適化する方法は?

分類Dev

jqueryを使用してasp.netフォームビューのボタンを非表示にする

分類Dev

ASP.Net WebForms + Paypalフォーム

分類Dev

asp.netフォームのキューイングスレッド

分類Dev

ASP.NET Webフォーム:c#コードビハインドからの値を表示します

分類Dev

ページasp.netの複数のフォーム

分類Dev

ASP.NET正規化されたデータベースの操作

分類Dev

ASP.NET CoreRazorページへのAJAXコールバックの例

分類Dev

ASP.NET CoreRazorページのマルチパスルーティング

分類Dev

メール連絡フォームの送信c#asp.net Visual Studio 2012

分類Dev

Asp.Net MVC 部分ビュー フォーム ポストはページ全体を置き換えます

分類Dev

デフォルトのASP.NETコアIDパスワードの正規表現

分類Dev

ASP.NET Webフォームページのクラス属性(?)

分類Dev

動的フォームを構築するC#ASP.NET Core

分類Dev

ASP.NET CoreRazorページを使用した並べ替えの実装

分類Dev

ASP.NET-標準検証前のフォームの検証

分類Dev

Asp .net MVCRazor-フォームからのHTMLの投稿

分類Dev

JavaScriptでのasp.net MVCフォームの検証

分類Dev

ASP.NETでのフォームとボタンの問題

分類Dev

asp.netでビューを返さずにフォームを検証する方法は?

分類Dev

ASP.NET MVC4でビューを保護する:フォーム認証

Related 関連記事

  1. 1

    ASP.NET CoreRazorビューでの再帰

  2. 2

    ASP .NET CoreRazorページでの承認

  3. 3

    同じビュー上の複数のフォーム(asp.net mvc)

  4. 4

    ASP.NETフォームのWacom署名

  5. 5

    asp.net c# フォーマットされた数値の正規表現バリデーター

  6. 6

    Asp.Net CoreRazorページでのリモート検証

  7. 7

    ASP.net Webフォーム-動的フォーム-C#

  8. 8

    ASP.NET MVC C#でのフォームの検証

  9. 9

    asp.net Webフォームのグリッドビューから「foreach」イベントを最適化する方法は?

  10. 10

    jqueryを使用してasp.netフォームビューのボタンを非表示にする

  11. 11

    ASP.Net WebForms + Paypalフォーム

  12. 12

    asp.netフォームのキューイングスレッド

  13. 13

    ASP.NET Webフォーム:c#コードビハインドからの値を表示します

  14. 14

    ページasp.netの複数のフォーム

  15. 15

    ASP.NET正規化されたデータベースの操作

  16. 16

    ASP.NET CoreRazorページへのAJAXコールバックの例

  17. 17

    ASP.NET CoreRazorページのマルチパスルーティング

  18. 18

    メール連絡フォームの送信c#asp.net Visual Studio 2012

  19. 19

    Asp.Net MVC 部分ビュー フォーム ポストはページ全体を置き換えます

  20. 20

    デフォルトのASP.NETコアIDパスワードの正規表現

  21. 21

    ASP.NET Webフォームページのクラス属性(?)

  22. 22

    動的フォームを構築するC#ASP.NET Core

  23. 23

    ASP.NET CoreRazorページを使用した並べ替えの実装

  24. 24

    ASP.NET-標準検証前のフォームの検証

  25. 25

    Asp .net MVCRazor-フォームからのHTMLの投稿

  26. 26

    JavaScriptでのasp.net MVCフォームの検証

  27. 27

    ASP.NETでのフォームとボタンの問題

  28. 28

    asp.netでビューを返さずにフォームを検証する方法は?

  29. 29

    ASP.NET MVC4でビューを保護する:フォーム認証

ホットタグ

アーカイブ