在Razor动态属性中编码WhiteSpace

时间:2013-02-11 11:01:11

标签: razor whitespace html-encode

我使用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>

请高度赞赏此问题的任何解决方案。

2 个答案:

答案 0 :(得分:3)

我通过简单地执行String.Replace("","&nbsp")

解决了这个问题
<a @(!item.HasSubItems ? "data-tab-title=" + item.Name.Replace(" ","&nbsp") : "") 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)