运行特定于视图的javascript代码

Run javascript code that is specific to the view

本文关键字:javascript 代码 视图 于视图 运行      更新时间:2023-09-26

. NET MVC4应用程序,我得到了1个javascript文件为我的功能在整个网站。这工作得很好-但是我想在某些视图中运行某些代码。通常我会通过简单地在视图中放置一个简短的脚本标记来调用所需的函数来解决这个问题。然而,我在body标签的底部加载我的js文件,所以这个脚本标签会在加载之前调用一个函数,这显然是行不通的。

我如何从不同的视图调用我的js文件的各个部分,同时保持我的js文件在主体的底部?

这里发生了一些事情。

  1. 我不会把JavaScript直接在页面。原因很多,这不是你问题的重点,而是我想提出的一些问题。

  2. 你可以有一个单独的JS文件,在你的主JS文件之后加载,它实际上是从"main"调用函数。

我的方法是用id:

标记这些视图
<div id="specific-page-name"></div>

然后在我的javascript简单地做:

if ($('#specific-page-name').length) {
    // Run code
}

这样你仍然可以把你的视图和js代码分开。

最后,如果我必须在js中使用模型数据,我可以这样做:

<div data-model-data="@Model.Data"></div>

直接读为:

$('div').data('model-data');

我详细说明Matt在他的评论中给出的答案:在你的布局中,你可以指定你想要一些额外的HTML内容(在你的情况下,这将是你的JS)。你需要把它添加到你的主JS块之后。

@RenderSection("AddScripts", required: false)

然后在你的视图中,你可以添加一个节,它不会在视图中呈现,而是在布局中相应的节中呈现(在你的主JS块之后)。

@section AddScripts {
<script type="text/javascript">
 ...
</script>
}