为什么这会引发字符串格式异常

本文关键字:字符串 格式 异常 为什么 | 更新日期: 2023-09-27 18:28:10

我看不到树的木头。

为什么这会引发字符串格式异常?

 private const string GoogleAnalyticsFormat = @"<script type=""text/javascript"">
                                                var _gaq = _gaq || [];
                                                _gaq.push(['_setAccount', '{0}']);
                                                _gaq.push(['_trackPageview']);
                                                (function () {
                                                    var ga = document.createElement('script');
                                                    ga.type = 'text/javascript';
                                                    ga.async = true;
                                                    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                                                    var s = document.getElementsByTagName('script')[0];
                                                    s.parentNode.insertBefore(ga, s);
                                                })();
                                            </script>";
public static IHtmlString RenderGoogleAnalytics<T>(this HtmlHelpers<T> html, string trackingCode )
{
    return html.Raw(string.Format(GoogleAnalyticsFormat, trackingCode));
}

为什么这会引发字符串格式异常

看看你的格式字符串的这一部分:

function () { ... }

这些大括号被解释为占位符的开始/结束。你需要加倍:

function () {{ ... }}

所以你的完整声明是:

private const string GoogleAnalyticsFormat = @"<script type=""text/javascript"">
    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', '{0}']);
    _gaq.push(['_trackPageview']);
    (function () {{
        var ga = document.createElement('script');
        ga.type = 'text/javascript';
        ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(ga, s);
    }})();
    </script>";

您必须将大括号{更改为{{