2

我正在寻找一种将自定义脚本注入_Layout.cshtml纯代码的方法。_Layout.cshtml对此一无所知。就像浏览器链接一样。

你简单地写这个:

app.UseBrowserLink();

这会在运行时注入体内。

    <!-- Visual Studio Browser Link -->
    <script type="application/json" id="__browserLink_initializationData">
        {"requestId":"a717d5a07c1741949a7cefd6fa2bad08","requestMappingFromServer":false}
    </script>
    <script type="text/javascript" src="http://localhost:54139/b6e36e429d034f578ebccd6a79bf19bf/browserLink" async="async"></script>
    <!-- End Browser Link -->
</body>

中没有它的迹象_Layout.cshtml不幸的是,浏览器链接不是开源的,所以我看不到他们是如何实现它的。 浏览器链接源现在可用

所以我想知道它是怎么做到的?

4

2 回答 2

2

它不是开源的,但您可以轻松地对其进行反编译以查看其工作原理。从源代码中的评论:

此流实现是一个直通过滤器。它的工作是在 HTML 内容的末尾添加指向浏览器链接连接脚本的链接。它使用与主机的连接来执行此操作,在主机上完成实际的过滤工作。如果主机连接出现任何问题,或者正在写入的内容实际上不是 HTML,则过滤器将进入直通模式并将所有内容原封不动地返回到输出流。

整个事情似乎很复杂,但似乎没有使用开箱即用的任何东西,所以我想可以编写类似的东西。

于 2017-08-04T09:56:31.900 回答
0

Razor 让你可以很容易地做到这一点——你甚至可以使用一个标志。

例子:

在您的控制器中:

ViewData["RegisterCustomCode"] = "true";

在您的视图 (.cshtml) 中:

@if (ViewData["RegisterCustomCode"] == "true")
{
    <text>
        <script src="..."></script>
    </text>
}
于 2017-08-04T08:27:02.810 回答