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}&center={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&center=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@更正为&(为昏昏欲睡的编辑道歉)