Почему моя страница MVC2 HtmlEncoding является помощником html, но только когда она находится внутри тега ссылки? - PullRequest
0 голосов
/ 30 марта 2012

У меня действительно странная проблема.Я написал HtmlHelper ...

public static class MaterResourceLocationHelper
    {
        public static HtmlString GetMasterLocation(this HtmlHelper htmlHelper)
        {
            return new 
                HtmlString(ConfigurationManager
                               .AppSettings["MasterResourceLocation"]);
        }
    }

Когда я помещаю следующее в MVC2 View ...

<%= Html.GetMasterLocation() %>

В исходном виде я получаю ...

http://localhost/esd.myapp.com/

Однако, как только я пытаюсь использовать его в контексте, подобном этому ...

<link href='<%= Html.GetMasterLocation() %> 
               /Css/jquery-ui-1.8.2.custom.css' 
      rel="stylesheet" type="text/css" />

Я получаю это в источнике представления ...

<link 
    href="../../Views/Shared/%3C%25=%20Html.GetMasterLocation()%20%25%3E%20/Css/jquery-ui-1.8.2.custom.css" 
    rel="stylesheet" type="text/css" />

Я действительно не понимаю, почему это происходит?

1 Ответ

0 голосов
/ 30 марта 2012

У движка представления ASP есть несколько забавных правил, когда эти теги оцениваются, а когда нет.Попробуйте это:

<link href='<%= Html.GetMasterLocation() + "/Css/jquery-ui-1.8.2.custom.css"%>' 
  rel="stylesheet" type="text/css" />

Кажется, что теги <%= %> оцениваются, только если они представляют весь атрибут HTML.В противном случае двигатель воспринимает это буквально.Здесь вы видите не HTML-кодировку результата, а URL-кодировку буквального значения между кавычками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...