我试图在视图中使用MVC4 / Razor在html中写下Márcia这个词,但结果是错误的:
<span title="Márcia">Márcia</span>
注意:标记 SPAN 中的单词打印输出正确,但模型(@ Model.Name)的相同属性中的单词显示为编码为{{ 1}}
已经尝试了所有命令,但是在html属性中应用时,任何人都可以工作:
á
为什么html解码在html属性中使用时不起作用?如何使它工作?
答案 0 :(得分:7)
这对我有用。这是我的HomeController
代码:
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new HomeModel();
model.Name1 = "Márcia";
model.Name2 = "Má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>
标记中,它就会将á转换为á
,无论如何。我玩这个很好,并且无法找到阻止这种情况发生的方法。所以,这里有两个可能适合你的工作:
(我知道这不是理想的,但这是我能找到的最好的工作。)
我的控制器代码:
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>
答案 1 :(得分:0)
您可以将属性名称与值放在一起。
@{
var title = "title='Márcia'";
}
<span @Html.Raw(title)>Márcia</span>