HtmlDecode不工作使用Razor MVC内部html属性

本文关键字:MVC 内部 html 属性 Razor 工作 HtmlDecode | 更新日期: 2023-09-27 18:05:01

我试图在html中使用MVC4/Razor在视图中编写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属性?如何让它发挥作用?

HtmlDecode不工作使用Razor MVC内部html属性

我就是这么做的。以下是我的HomeController代码:

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

这是我的Home Index视图:

@model mvctestappweb.Models.HomeModel
@{
    ViewBag.Title = "Index";
}
@Model.Name1
<br />
@Html.Raw(Model.Name2)

视图的输出如下所示:

Márcia
Márcia

EDIT:我明白了。问题是,只要你把RAW到HTML <span>标签,它转换成&#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);
    }
}

我的观点:

@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>

可以将属性名与值放在一起。

@{  
    var title = "title='Márcia'";  
}  
<span @Html.Raw(title)>Márcia</span>