У меня есть метод, который захватывает локализацию данной строки и возвращает ее. Этот метод вызывается методом расширения HtmlHelper
, так что он доступен из представлений Razor. Однако иногда мы также используем его в контроллерах и других местах, отличных от Razor, и поэтому у нас есть «внутренний» метод.Создание HTML из класса, отличного от MVC
Теперь, для отладки, я хотел бы обернуть возвращенную, локализованную (или, возможно, не) строку в некоторый HTML (что-то вроде <span class="localized">Returned text</span>
). Тем не менее, если я пишу
return string.Format("<span class=\"localized\">{0}</span>", text);
то оказывается страница включает <
и >
символы, как если бы они были HTML-кодировке, поэтому выход является поддельным.
Я не могу, конечно, назвать HtmlHelper.Raw(string s)
, отчасти потому, что я не знаю, как создать HtmlHelper
из-за контроллер MVC, а затем, поскольку она возвращает IHtmlString
, который не является присваиваемым string
.
Если я звоню HttpUtility.HtmlEncode(string s)
, текст дважды кодируется, а на отображаемой странице отображается <span class&eq;"...
.
Что мне делать, чтобы иметь строку, которая отображает HTML в представлении?
EDIT
Вот код, от Helper
статического класса (все методы расширения работы, за исключением того, что они ведут себя неправильно):
public static string localize(string textId)
{
string ret = "";
// Query to obtain the localized string,
// or to obtain a fallback in case there are issues
// (missing localization, wrong id...)
// In the end, ret is filled with the output string
#if !OFFICIAL
ret = string.Format("<span class=\"localized\" title=\"{1}\">{0}</span>", ret, expression);
#endif
return ret;
}
public static string localize(this HtmlHelper htmlhelper, string expression)
{
return trad(textId);
}
Где ваш 'метод string.Format' вызывается из? – Lee
'IHtmlString.ToString()' возвращает 'string' –
@Lee из внутреннего метода, который может вызываться методом расширения HtmlHelper или из других мест. – Simone