我正在尝试使我的母版页使用我的内容页面,允许内容页面访问母版页控件。我收到错误:
分析器错误消息:'mastertype' 指令必须只有一个 attribute:TypeName或VirtualPath
这就是:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="viewProduct.aspx.cs" Inherits="AlphaPackSite.viewProduct"
MasterPageFile="MasterPages/Main.master"
title="Hi there!"
%>
<%@ MasterType TypeName="Main" VirtualPath="MasterPages/Main.master" %>
我的母版页是:
namespace AlphaPackSite
{
public partial class Main : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
我对命名空间有点混淆,所以可能会让它们出错,但现在所有的页面都在同一个命名空间中。
更新
当我把它变成:
<%@ MasterType VirtualPath="MasterPages/Main.master" %>
我一直收到错误:
Compiler Error Message: CS0030: Cannot convert type 'AlphaPackSite.Main' to 'ASP.masterpages_main_master'
Source Error:
Line 147: public new ASP.masterpages_main_master Master {
Line 148: get {
Line 149: return ((ASP.masterpages_main_master)(base.Master));
Line 150: }
Line 151: }
答案 0 :(得分:3)
除非您想在当前页面(编写此代码)中保留母版页的引用,否则我建议您删除<%@ MasterType VirtualPath="MasterPages/Main.master" %>
线。
此行提供了访问页面母版页的方法(例如,当您要更改母版页上的标签或菜单需要添加更多项目等时)。 如果您的母版页的内容不需要从您的内容页面进行任何更改/更新,则无需使用MasterType标记。因为同时使用MasterPageFile="MasterPages/Main.master
和MasterType
,你混淆了编译器(即使主页是相同的)。
<强>更新强>
如果必须保留MasterType标记,则从页面指令中删除MasterPageFile="MasterPages/Main.master
属性。
答案 1 :(得分:2)
如错误所示,@MasterType
只需要一个参数。试试吧:
<%@ MasterType VirtualPath="MasterPages/Main.master" %>
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms228274.aspx。
答案 2 :(得分:1)
(1)注释掉MasterType指令并编译网站 (2)取消注释masterType指令并将其与类型名称或虚拟路径放在一起,两者都将抛出错误
评论和取消注释的原因:
从逻辑上讲,当网站无法构建时,它就不会有
AlphaPackSite.Main
已创建,因此会抛出错误
但是一旦你发表评论,并且代码中没有其他错误,你希望你的垃圾箱中有类型!
因此有更多机会使用comment > compile > uncomment
种类的东西
MasterType的参考:
http://msdn.microsoft.com/en-us/library/ms228274.aspx
答案 3 :(得分:0)
尝试:
<%@ MasterType TypeName="AlphaPackSite.Main" %>
答案 4 :(得分:-1)
我在寻找另一个答案时看到了这个问题,并认为如果其他人有这个问题,我会尽快给出答案。
问题是您不希望在主名称调用中使用虚拟路径。相反,您需要使用TypeName并为您的路径添加下划线。以下是基于您的路径的正确标记:
<%@ MasterType TypeName="AlphaPackSite_Main" %>