如何停止&在以下字符串中被编码为&安培;
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}¢er={4}",
"https",
GOOGLE_MAP_DOMAIN,
GOOGLE_MAP_ACTION,
GOOGLE_MAP_API,
mapData.Coordinates.ToString()
);
tag.MergeAttribute("src", googleMapUrl);
return MvcHtmlString.Create(tag.ToString());
}
}
这会生成一个带有SRC的iframe,如下所示:
src="https://www.google.com/maps/embed/v1/view?key=myAPIkey&center=52.377736, 4.915779"
GoogleMaps忽略中心(GPS坐标)
我想要的是:
src="https://www.google.com/maps/embed/v1/view?key=myAPIkey¢er=52.377736, 4.915779"
答案 0 :(得分:1)
HtmlHelper 假设对&符号进行编码。实际上,在属性中使用时的&符应该被编码为有效的HTML。 W3C验证器会告诉你同样的事情。
您的代码将正常运行,浏览器将理解它,服务器也将如此。
不相信我?请参阅以下链接:
(特别是" HTML中的链接(或任何HTML属性值") http://mrcoles.com/blog/how-use-amersands-html-encode/
答案 1 :(得分:0)
您可以使用System.Web.HttpUtility.HtmlDecode(tag.Tostring())尝试生成Html标记字符串,然后在MvcHtmlString.Create()例程中使用此字符串。