ClientDependency Framework&Razor,添加自定义JS

时间:2018-07-05 07:45:19

标签: javascript c# asp.net-mvc umbraco client-dependency

我正在尝试摆脱ClientDependency Framework的困扰。 https://github.com/Shazwazza/ClientDependency 我在Umbraco网站上使用它。

我要运行的一些自定义javascript(不在文件中)有问题。

我想运行一个函数(位于“ functions.js”中),但是每页具有不同的参数。

因此,我将以下内容添加到模板中:

Html.RequireJs("~/scripts/functions.js", 1);

在我添加-tag之前的主页上:

@Html.RenderJsHere()

但是我应该在哪里放置函数调用?我不能只是将其添加到模板中,因为尚未加载“ functions.js”(位于母版页的底部)。

我已经考虑过为每个调用创建一个js文件并将其添加到Html.RequireJs(...),但这不是一个很好的解决方案。

是否可以将内联脚本添加到“要渲染的JS”列表中?

编辑: 我只是想使用RenderSection()使它工作,但是当在宏上定义该节时,这似乎不起作用?

编辑: 我正在输入此代码时,这里没有代码,但是想法是这样的:

functions.js

function WriteToConsole(input) {
    console.log('Log', input);
}

template1.cshtml

@{Html.RequireJs("functions.js");}
<script>
    WriteToConsole("This is from template 1");
</script>

template2.cshtml

@{Html.RequireJs("functions.js");}
<script>
    WriteToConsole("This is from template 2");
</script>

master.cshtml

<body>
    @RenderBody()

    @Html.RenderJsHere()
</body>

只提供一个我要做什么的想法。 可以想象,现在在包含<script>之前调用了模板上的functions.js部分。这会导致错误。

还是我把这件事搞错了?

1 个答案:

答案 0 :(得分:0)

您是否要更改Html.RequireJs("~/scripts/functions.js", 1);中的脚本调用?

所以类似Html.RequireJs("~/scripts/functions.js?myparam=xyz", 1);的东西是您要实现的,但网址是动态的吗?

如果是这样,您可以执行以下操作:

//perhaps have some logic above to determine what the query should be and concatenate it to the string like so.
string query = "?myparam=xyz";
string scriptcall = "~/scripts/functions.js"+query ;
Html.RequireJs(scriptcall, 1);

您能否提供更多代码,以便我们可以看到您正在尝试做什么?也许列出了应如何工作的步骤?