簡體   English   中英

如何在我的項目之間共享母版頁

[英]How to share Master Pages between my projects

我正在開發一個Web項目,我需要共享一個母版頁,這樣當我創建一個新頁面時,它就有了基本的布局。 我想到的是用該母版頁創建一個項目,並在每個Web項目中添加它作為參考。 但問題是我不知道如何在我想要應用MP的.aspx文件中嵌入母版頁,或者它是在項目之間共享母版頁的最佳方式。 我會幫助或評論任何幫助!

在這里,我給你我的代碼(這不起作用):

Index.aspx

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="" CodeBehind="Index.aspx.cs" Inherits="MiWeb.Index" %>
    <HeaderMp:Header ID="ctntHead" ContentPlaceHolderID="head" runat="server">
        <title>SITPer</title>   
    </HeaderMp:Header>

Header.Master

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Header.Master.cs" Inherits="MasterPages.Header" %>

<!DOCTYPE html>

<html>
<head>
    <title></title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <meta name="description" content="" />
        <meta name="keywords" content="" />
        <script src="js/jquery.min.js"></script>
        <script src="js/jquery.dropotron.min.js"></script>
        <script src="js/skel.min.js"></script>
        <script src="js/skel-layers.min.js"></script>
        <script src="js/init.js"></script>         
        <noscript>
            <link rel="stylesheet" href="css/skel.css" />
            <link rel="stylesheet" href="css/style.css" />
            <link rel="stylesheet" href="css/style-desktop.css" />
        </noscript>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <div>
        <!-- Header -->
        <div id="header-wrapper" >
            <div id="header">                   
                <!-- Logo -->
                <div id="logo">
                    <h1><a href="Index.aspx">SITPer</a></h1>
                    <p>Prueba</p>
                </div>
            </div>
        </div>  
        <asp:ContentPlaceHolder ID="body" runat="server">

        </asp:ContentPlaceHolder>
    </div>
</body>
</html>

謝謝!!

注意:除了此處描述的鏈接文件功能外,Visual Studio 2015+中還有一個新的共享項目功能 ,允許您創建專門用於共享代碼的項目,該代碼將編譯到添加到的項目中。

母版頁只能屬於單個Web項目。 但是,Visual Studio / MSBuild有一個功能,允許您在項目之間共享代碼以有效地獲得所需的結果。 如果你把母版頁文件(所有的人,包括.master.master.cs.master.designer.cs )到一個文件夾在同一級別為您的解決方案,你可以使用Visual Studio中的鏈接文件功能添加file作為鏈接文件(未復制到項目文件夾中的文件)。

在Windows資源管理器中,打開包含解決方案( .sln )文件的目錄。 右鍵單擊空白,然后單擊New -> Folder 將文件夾命名為SharedFiles Header.masterHeader.master.csHeader.master.designer.cs文件復制到該文件夾​​中。

在Visual Studio中,從所有項目中刪除Header.master文件。 然后,對於要在其中共享Header.master頁面的每個項目,請按照以下步驟操作。

  1. 在解決方案資源管理器中右鍵單擊要共享文件的項目,然后單擊Add -> Existing Item
  2. 在“添加現有項”對話框中,導航到SharedFiles文件夾。
  3. 突出顯示Header.masterHeader.master.csHeader.master.designer.cs文件。
  4. 在“添加現有項”對話框的右下角,單擊“添加”按鈕旁邊的向下箭頭(而不是“添加”按鈕本身!),然后單擊下拉列表中的“ Add As Link項。

如果你做得正確,文件的圖標上會有一個箭頭表示它是一個鏈接文件。 現在,當您對母版頁進行更改時,更改將反映在所有項目中。

您還必須在Index.aspx頁面中修復一個問題。 您必須將母版頁文件設置為文件的虛擬位置。 如果您按照上面的說明操作,路徑將是......

MasterPageFile="~/Header.master"

但請注意,如果將文件(或鏈接文件)放在Web項目的子目錄中,虛擬路徑將會更改。

我認為您沒有在頁面中添加主頁的地址(MasterPageFile =“”)。 你在使用visual studio嗎? 如果你那么你只需要使用ctrl + shift + a並使用母版頁選擇網頁表單。

Master Page:
    <%@ Master Language="VB" AutoEventWireup="false" CodeBehind="Site1.master.vb" Inherits="WebApplication2.Site1" %>

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

        </asp:ContentPlaceHolder>

    Page.aspx which uses masterpage:
        <%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site1.Master" CodeBehind="Registration Form.aspx.vb" Inherits="WebApplication2.Registration_Form" %>
        <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM