我正在处理一个 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>
谢谢!!
最佳答案
NOTE: In addition to the linked files feature described here, there is a new shared project feature in Visual Studio 2015+ that allows you to create a project exclusively for sharing code that will be compiled into the project it is added to.
母版页只能属于一个 Web 项目。但是,Visual Studio/MSBuild 有一个功能,允许您在项目之间共享代码以有效地获得所需的结果。如果您将母版页文件(所有文件包括 .master
、.master.cs
和 .master.designer.cs
)放入与您的解决方案处于同一级别的文件夹,您可以使用 linked file feature of Visual Studio将文件添加为链接文件(未复制到项目文件夹中的文件)。
在 Windows 资源管理器中,打开包含您的解决方案 (.sln
) 文件的目录。右键单击空白处,然后单击 New -> Folder
。将文件夹命名为 SharedFiles
。将 Header.master
、Header.master.cs
和 Header.master.designer.cs
文件复制到文件夹中。
在 Visual Studio 中,从所有项目中删除 Header.master
文件。然后针对您要在其中共享 Header.master
页面的每个项目执行这些步骤。
- 在解决方案资源管理器中右键单击要共享文件的项目,然后单击
添加 -> 现有项
。 - 在“添加现有项”对话框中,导航到
SharedFiles
文件夹。 - 突出显示
Header.master
、Header.master.cs
和Header.master.designer.cs
文件。 - 在“添加现有项”对话框的右下角,单击“添加”按钮旁边的向下箭头(不是“添加”按钮本身!),然后单击下拉列表中的
添加为链接
项.
如果操作正确,该文件的图标上会有一个箭头,表明它是一个链接文件。现在,当您对母版页进行更改时,更改将反射(reflect)在所有项目中。
您还有一个问题必须在您的 Index.aspx 页面中修复。您必须将母版页文件设置为该文件的虚拟位置。如果您按照上面的说明进行操作,路径将是...
MasterPageFile="~/Header.master"
但请注意,如果您将文件(或链接文件)放在 Web 项目的子目录中,虚拟路径将会改变。
关于c# - 如何在我的项目之间共享母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29051903/