2

ビューで MVC4 / Razor を使用して HTML にMárciaという単語を書き込もうとしていますが、結果は次のように間違っています。

<span title="M&#225;rcia">Márcia</span> 

注: タグSPAN印刷出力内の単語は正しく出力されますが、モデル (@Model.Name) の同じプロパティ内の単語はエンコードされた文字で表示されます&#225;

すでに以下のすべてのコマンドを試していますが、html 属性内に適用すると誰でも機能します。

@Html.Raw(model.Name)

@Html.Raw(HttpUtility.HtmlDecode(model.Name))

@Html.Raw(Server.HtmlDecode(model.Name))

@HttpUtility.HtmlDecode(model.Name)

@Server.HtmlDecode(model.Name)

html属性内で使用するとhtmlデコードが機能しないのはなぜですか? それを機能させる方法は?

4

2 に答える 2

7

これが私のために働いたものです。これが私のHomeControllerコードです:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new HomeModel();
        model.Name1 = "Márcia";
        model.Name2 = "M&#225;rcia";
        return View(model);
    }
}

ここに私のホームインデックスビューがあります:

@model mvctestappweb.Models.HomeModel

@{
    ViewBag.Title = "Index";
}

@Model.Name1
<br />
@Html.Raw(Model.Name2)

ビューの出力は次のようになります。

Márcia
Márcia

編集:なるほど。問題は、RAW を HTML タグに入れるとすぐに<span>、á が&#225;何があっても変換されることです。私はこれでかなり遊んでいましたが、これが起こらないようにする方法を見つけることができませんでした. そのため、次の 2 つの回避策が有効です。

(これが理想的でないことはわかっていますが、私が見つけた最善の回避策でした。)

私のコントローラーコード:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new HomeModel();
        model.Name = "Márcia";
        model.SpanHtml = "<span title='Márcia'>Márcia</span>";
        return View(model);
    }
}

ここに私の見解:

@model mvctestappweb.Models.HomeModel

@{
    ViewBag.Title = "Index";
}

1: @Html.Raw("<span title=\"" + @Html.Raw(Model.Name) + "\">" + @Model.Name + "</span>")
<br />
2: @Html.Raw(@Model.SpanHtml)

ビューの出力は次のようになります。

1: Márcia
2: Márcia

私の HTML ソースは次のようになります。

1: <span title="Márcia">Márcia</span>
<br />
2: <span title='Márcia'>Márcia</span>

于 2013-03-21T18:20:46.940 に答える
0

属性名と値を組み合わせることができます。

@{  
    var title = "title='Márcia'";  
}  

<span @Html.Raw(title)>Márcia</span> 
于 2014-04-28T11:40:14.037 に答える