ASP.NET MVC 3: метод расширения для UrlHelper / HtmlHelper кодирует в HTML - PullRequest
0 голосов
/ 19 ноября 2011

Я написал несколько методов расширения для UrlHelper, чтобы упростить загрузку тега a или. Тем не менее, кажется, что он отображает в браузере буквальный текст. Вот что у меня есть:

public static string Script(this UrlHelper helper, string scriptPath)
        {
            return string.Format(@"<script src=""{0}"" type=""text/javascript""></script>", helper.Content(scriptPath));
        }

Вот мой код .cshtml:

@section HeadContent
{
    @Url.Style("MyStyleName")
    @Url.Script("MyScriptName")
    @Url.MetaKeywords("My Keywords")
    @Url.MetaDescription("Some Description")
}

и он появляется в браузере с &lt;script [etc, etc]&gt;

Если я не использую методы расширения, они будут работать, как и ожидалось, правильно ... как я могу заставить его работать с моими расширениями?

Ответы [ 2 ]

2 голосов
/ 19 ноября 2011

Все HTML-помощники должны возвращать MvcHtmlString.Если вы просто вернете строку, она будет рассматриваться как ненадежное значение и будет закодирована в формате HTML.

2 голосов
/ 19 ноября 2011

Попробуйте это:

public static string Script(this UrlHelper helper, string scriptPath)
{
    return MvcHtmlString.Create(string.Format(@"<script src=""{0}"" type=""text/javascript""></script>", helper.Content(scriptPath)));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...