2014-09-29 1 views
1

Как остановить & в следующей строке от кодирования как & amp;HtmlHelper encodes & as &

public static class GoogleMaps 
{ 
    public static MvcHtmlString DisplayMap(this HtmlHelper html, 
         GoogleMapData mapData, int width, int height) 
    { 
     const string GOOGLE_MAP_API = "xxx"; 
     const string GOOGLE_MAP_DOMAIN = "www.google.com/maps"; 
     const string GOOGLE_MAP_ACTION = "/embed/v1/view"; 

     var tag = new TagBuilder("iframe"); 
     tag.MergeAttribute("width", width.ToString()); 
     tag.MergeAttribute("height", height.ToString()); 
     tag.MergeAttribute("style", "border:0"); 
     tag.MergeAttribute("frameborder", "0"); 

     string googleMapUrl = String.Format(
           @"{0}://{1}{2}?key={3}&center={4}", 
           "https", 
           GOOGLE_MAP_DOMAIN, 
           GOOGLE_MAP_ACTION, 
           GOOGLE_MAP_API, 
           mapData.Coordinates.ToString() 
              ); 
     tag.MergeAttribute("src", googleMapUrl); 

     return MvcHtmlString.Create(tag.ToString()); 

    } 
} 

Это создает Iframe с SRC, такие как это:

SRC = "& https://www.google.com/maps/embed/v1/view?key=myAPIkey центр = 52.377736 , 4.915779"

GoogleMaps игнорирует центр (координаты GPS)

То, что я хочу это:

SRC = "https://www.google.com/maps/embed/v1/view?key = myAPIkey & центр = 52,377736, 4,915779"

+1

Elaborate, пожалуйста, какие HtmlHelper Встроенный, собственный Показать больше кода.? В настоящее время не задействован код MVC. Просто String.Format() не кодирует HTML. – abatishchev

+0

& символ - это кодированный HTML формат «&». Если вы не хотите, чтобы он был закодирован, вы будете необходимо заменить кодировщик чем-то другим, своим собственным ИЛИ вы можете заменить & на & вручную, используя метод 'String.Replace()'. – gretro

+0

выглядит как его @ на данный момент – CRice

ответ

0

HtmlHelper Предполагаемый для кодирования амперсанда. Фактически, амперсанд, когда он используется в атрибуте, должен быть закодирован как допустимый HTML. Валидатор W3C скажет вам то же самое.

Ваш код будет работать очень хорошо, браузер поймет его, и так будет сервер.

Не верьте мне? Смотрите следующие ссылки:

(в частности "Ссылка в HTML (или любое значение атрибута HTML") http://mrcoles.com/blog/how-use-amersands-html-encode/

http://www.htmlhelp.com/tools/validator/problems.html

0

Вы можете попробовать это с System.Web.HttpUtility.HtmlDecode (tag.Tostring()), чтобы сгенерировать строку тега Html, а затем использовать эту строку в MvcHtmlString.Create() рутина.

Смежные вопросы