Visual Studio 我应该把css和js代码放在MasterPage.Master of ASP.NET的什么地方?

yqhsw0fo  于 2023-03-03  发布在  .NET
关注(0)|答案(1)|浏览(140)

我需要在ASP.NET的 * MasterPage.master * 文件中引用css和js,代码A可以正常工作,但是Visual Studio显示了一个警告信息,可以看到图1。
顺便说一句,代码B不能得到正确的结果。

代码A

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs" Inherits="LinkTabs.MasterPage" %>

<!DOCTYPE html>

<html>

<script type="text/javascript" src='<%= ResolveUrl("~/Js/jquery-3.6.3.min.js")%>'></script>
<script type="text/javascript" src='<%= ResolveUrl("~/Js/my.js")%>'></script>

<link href="<%= ResolveUrl("~/Css/Main.css")%>" rel="stylesheet" />

<head runat="server">
    <title>Open multiple links in new tabs at once</title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

<body>
    <form id="form1" runat="server">
        <div id="container">

        </div>
    </form>
</body>

</html>

代码B

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs" Inherits="LinkTabs.MasterPage" %>

<!DOCTYPE html>

<html>

<head runat="server">
    <title>Open multiple links in new tabs at once</title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>

    <script type="text/javascript" src='<%= ResolveUrl("~/Js/jquery-3.6.3.min.js")%>'></script>
    <script type="text/javascript" src='<%= ResolveUrl("~/Js/my.js")%>'></script>

    <link href="<%= ResolveUrl("~/Css/Main.css")%>" rel="stylesheet" />
</head>

<body>
    <form id="form1" runat="server">
        <div id="container">

        </div>
    </form>
</body>

</html>

图像1

添加内容:

AI回答,你可以看到图2,对吗?

图像2

ni65a41a

ni65a41a1#

B在脚本文件方面看起来是正确的,但在内容模板方面看起来非常错误。
您的内容模板需要在一切之后。
所以,比如说你的脚本(在头部),然后是你的主菜单等等,在主页面中,这是在表单标签中。在非常底部,在你想在主页面中拥有的所有东西之后。
因此,您可以拥有“多个”内容区域。
所以,请这样说:

<head runat="server">
    <title>Open multiple links in new tabs at once</title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>

<body>
    <form id="form1" runat="server">

  -- all of the main page content here - menu bar etc.

    <div id="container">

        <asp:ContentPlaceHolder ID="MainContent" runat="server">

        </asp:ContentPlaceHolder>


    </div>

</form>

因此,您的MainContent保持器需要非常靠近底部,因此主页“表单”上的所有内容都位于最后一个内容占位符之上,当然,当您使用主页“创建”新页面时,您最终只会得到2个内容模板(第一个单头,我想你会很少使用),然后是MainContent内容,您可以在其中放置子页面中的常规内容。
当然,子页面永远不会有“form”标记,而且您只允许每个页面有一个。
所以,实际上,一个页面的布局(没有母版页),有你的额外脚本放置在头部。
但是,有了母版页,还有那些脚本,然后再一次,是的,那就在head部分。事实上,我在大多数情况下更喜欢我拥有的一些额外的js例程,我把它们放在master中的end form标记的正下方。
所以B看起来更适合js参考库的位置,但是它看起来缺少一个“主内容”区域,这个区域将“保存”您创建的每个页面的内容,并且通常将“非常”靠近母版页的底部-就在结束表单标记之前。
我“假设”发布的B示例只是针对这个问题,因为它缺少每个页面的主要内容模板。
公平地说,我从来没有真正搞砸了很多与这些东西,因为我总是开始与现有的模板,其中包括默认的引导菜单。

相关问题