HtmlDecode不能在html属性中使用Razor MVC

Jef*_*rio 2 c# asp.net asp.net-mvc html-entities asp.net-mvc-3

我试图在视图中使用MVC4/Razor在html中写下Márcia这个词,但结果是错误的,如:

<span title="M&#225;rcia">Márcia</span> 
Run Code Online (Sandbox Code Playgroud)

注意:标签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)
Run Code Online (Sandbox Code Playgroud)

为什么html解码在html属性中使用时不起作用?如何使它工作?

jmr*_*net 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的主页索引视图:

@model mvctestappweb.Models.HomeModel

@{
    ViewBag.Title = "Index";
}

@Model.Name1
<br />
@Html.Raw(Model.Name2)
Run Code Online (Sandbox Code Playgroud)

视图上的输出如下所示:

Márcia
Márcia
Run Code Online (Sandbox Code Playgroud)

编辑:我明白了.问题是,只要您将RAW放入HTML <span>标记中,它就会将converts转换为&#225;无论如何.我玩这个很好,并且无法找到阻止这种情况发生的方法.所以,这里有两个可能适合你的工作:

(我知道这不是理想的,但这是我能找到的最好的工作.)

我的控制器代码:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里我的观点:

@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)
Run Code Online (Sandbox Code Playgroud)

视图上的输出如下所示:

1: Márcia
2: Márcia
Run Code Online (Sandbox Code Playgroud)

我的HTML源代码如下:

1: <span title="Márcia">Márcia</span>
<br />
2: <span title='Márcia'>Márcia</span>
Run Code Online (Sandbox Code Playgroud)