Кодирование пробелов в динамических атрибутах Razor

У меня есть динамические атрибуты HTML, созданные с помощью Razor.

Кажется, все работает нормально, за исключением случаев, когда я генерирую значение атрибута с пробелом внутри, например:

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>

Пожалуйста, любые решения этой проблемы будут высоко оценены.


person sacritruth    schedule 11.02.2013    source источник


Ответы (2)


Я решил проблему, просто выполнив String.Replace("","&nbsp")

<a @(!item.HasSubItems ? "data-tab-title=" + item.Name.Replace(" ","&nbsp") : "") href="@item.Url" ></a>  

Это решило проблему довольно хорошо.

person sacritruth    schedule 11.02.2013

Вы можете попробовать:

@{
  var dynamicLink = string.Format("<a href='{0}' {1}></a>", item.Url, (!item.HasSubItems)? "data-tab-title='" + item.Name +"'" : "");
 }

@Html.Raw(dynamicLink)
person Mate    schedule 11.02.2013