我使用Razor生成动态HTML属性。
一切似乎工作得很好,除非我在像:
中生成一个带有空格的属性值item.Name = "Organisation Structure";
当我尝试在动态属性中渲染此值时,Razor认为空白之后的文本是另一个完全不同的属性。
<a href="@item.Url" @(!item.HasSubItems ? "data-tab-title=" + item.Name : "")></a>
错误地渲染为:
<a href="/index" data-tab-title="Organisation" structure=""></a>
而不是像这样:
<a href="/index" data-tab-title="Organisation structure"></a>
我甚至尝试使用Html.Encode(item.Name)
,如下所示:
<a href="@item.Url" @(!item.HasSubItems ? "data-tab-title=" + Html.Encode(item.Name) : "")></a>
请高度赞赏此问题的任何解决方案。
答案 0 :(得分:3)
我通过简单地执行String.Replace(""," ")
<a @(!item.HasSubItems ? "data-tab-title=" + item.Name.Replace(" "," ") : "") href="@item.Url" ></a>
这很好地解决了这个问题。
答案 1 :(得分:2)
你可以尝试:
@{
var dynamicLink = string.Format("<a href='{0}' {1}></a>", item.Url, (!item.HasSubItems)? "data-tab-title='" + item.Name +"'" : "");
}
@Html.Raw(dynamicLink)