gpt4 book ai didi

javascript - 我可以在 ScriptBundle 中包含的 Javascript 中使用 Razor 语法吗?

转载 作者:行者123 更新时间:2023-11-30 06:58:20 25 4
gpt4 key购买 nike

我有一个控件,其代码类似于以下内容:

Javascript

$("#Postcode").autocomplete({
source: '@(Url.Action("AutocompleteHelper"))'
});

HTML

@Html.EditorFor(model => model.Postcode)


过去,它全部直接位于 .cshtml 文件中,Url.Action 按预期生成了一个工作 URL。

最近我需要在多个 View 中使用它,所以我将 JS 移动到一个单独的 .js 文件中(包装到 ScriptBundle 中并通过 @Scripts 包含在父 View 中.Render) 并且相应的 HTML 现在呈现为局部 View 。

这样做的副作用是 Razor 转换不再发生。我不希望将 Url.Action 替换为硬编码的 / /AutocompleteHelper 字符串,那么有没有其他方法可以动态生成和设置该值?我可以将 Javascript 从包中移出并移到局部 View 中,但共识似乎是您不应该在局部 View 中使用 JS。

最佳答案

这是我将 mvc 路径获取到我的 javascript 文件中的方法...

在您的 .js 文件中有一个 Initialise 函数(您可以根据需要命名)。将路由传递给 Initialise 函数,然后让 initialise 函数将其分配给一个变量,该变量可由您的 js 文件中的其他 javascript 访问。

在你看来...

<script>
Initialise(@(Url.Action("AutocompleteHelper")))
</script>
@Scripts.Render("~/bundles/yourscriptbundle")

在你的 .js 中......

var autoCompleteRoute;
function Initialise(route) {
autoCompleteRoute = route;
}

然后路由就可以在 .js 文件中使用了。我更喜欢这种方法,因为变量是在要使用它的 .js 文件中声明并赋值的。使用设置/初始化函数还可以清楚地表明在成功运行 javascript 之前需要完成一些事情。

关于javascript - 我可以在 ScriptBundle 中包含的 Javascript 中使用 Razor 语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27107810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com