C# HtmlHelper编码&;as&;amp;
如何阻止以下字符串中的&被编码为&C# HtmlHelper编码&;as&;amp;,c#,asp.net-mvc,html-helper,html-encode,C#,Asp.net Mvc,Html Helper,Html Encode,如何阻止以下字符串中的&被编码为& public static class GoogleMaps { public static MvcHtmlString DisplayMap(this HtmlHelper html, GoogleMapData mapData, int width, int height) { const string GOOGLE_MAP_API = "xxx"; co
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"
谷歌地图忽略中心(GPS坐标)
我想要的是:
src="https://www.google.com/maps/embed/v1/view?key=myAPIkey¢er=52.377736, 4.915779"
您可以尝试使用System.Web.HttpUtility.HtmlCode(tag.Tostring())生成Html标记字符串,然后在MvcHtmlString.Create()例程中使用此字符串。HtmlHelper应该对符号进行编码。事实上,当在属性中使用符号时,应该将其编码为有效的HTML。W3C验证器将告诉您同样的事情 您的代码工作正常,浏览器会理解它,服务器也会理解它 不相信我?请参阅以下链接: (特别是“HTML中的链接(或任何HTML属性值)”
请详细说明。哪个HtmlHelper?内置,您自己的?显示更多代码。目前没有涉及MVC代码。只需String.Format(),它不是HTML-encode。&;符号是“&”的HTML编码格式。如果您不想对其进行编码,则需要使用您自己的或手动使用
String.replace()替换编码器
method.现在看起来像是@你可以返回一个字符串而不是MvcHtmlString@更正为&(为昏昏欲睡的编辑道歉)