Как мне устранить ошибку «Тип ‘MasterPage2’ уже содержит определение для ‘head'»

#c# #asp.net

#c# #asp.net

Вопрос:

Каждый раз, когда я создаю свой MasterPage.master.aspx, я получаю сообщение об ошибке следующего содержания:

Тип ‘MasterPage2’ уже содержит определение для ‘head’

Эта ошибка появляется для всех защищенных значений в моем файле MasterPage.master.cs. Как мне исправить ошибку, пожалуйста?

Ниже приведен заголовок моей главной страницы:

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

И вот мои коды MasterPage.master.cs:

 using System;
using System.Web;
using System.Web.Profile;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public partial class MasterPage2 : System.Web.UI.MasterPage
{

    protected ContentPlaceHolder head;
    protected HtmlAnchor A1;
    protected HtmlAnchor A2;
    protected HtmlAnchor A9;
    protected SiteMapDataSource SiteMapDataSource1;
    protected Menu MainMenu;
    protected HtmlAnchor home;
    protected HtmlAnchor A3;
    protected HtmlAnchor A4;
    protected HtmlAnchor A5;
    protected HtmlAnchor A6;
    protected HtmlAnchor A7;
    protected HtmlAnchor A8;
    protected HtmlGenericControl submenu;
    protected ScriptManager ScriptManager1;
    protected LoginName LoginName1;
    protected Literal litbal;
    protected Literal litdate;
    protected UpdatePanel up12;
    protected ContentPlaceHolder content1;
    protected ContentPlaceHolder ContentPlaceHolder2;
    protected ContentPlaceHolder ContentPlaceHolder3;
    protected ContentPlaceHolder ContentPlaceHolder4;
    protected Label lblCreatedBy;
    protected ContentPlaceHolder ContentPlaceHolder1;
    protected HtmlForm form1;
    protected DefaultProfile Profile
    {
        get
        {
            return (DefaultProfile)this.Context.Profile;
        }
    }

    protected HttpApplication ApplicationInstance
    {
        get
        {
            return this.Context.ApplicationInstance;
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        this.litdate.Text = DateTime.Now.ToString("D");
        if (((object)this.Page.User.Identity.Name).ToString() != "")
            this.litbal.Text = DB.ExecuteScaler(string.Format("Select Agent_current_bal from AgentBasicInfo where Agent_ID='{0}'", (object)((object)this.Page.User.Identity.Name).ToString().ToLower())).ToString();
        else
            this.up12.Visible = false;
        this.submenu.Visible = ((object)this.Page.User.Identity.Name).ToString() == "admin";
        this.lblCreatedBy.Text = "Created By: otieno t oloo";
    }
}
  

Ниже приведены мои коды MasterPage.master.aspx:

 <%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">   
    <title>Untitled Page</title>
    <link href="css/Style.css" rel="stylesheet" type="text/css" media="all" />   
    <asp:ContentPlaceHolder ID="head" runat="server"></asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div id="container">
        <!--header starts -->
        <div id="header">
            <div id="logo">
                <img  src="~/Images/logo.gif" alt="logo" runat="server" /></div>
            <div id="logoright">
                <div id="topbar1" style="float: right">
                    <div class="empty" style="padding-top:3px; padding-right: 10px; background: #f1f1f1; height: 25px">
                      <a id="A1" href="~/Agent_list.aspx" runat="server">Agents</a>|amp;nbsp; <a href="~/AboutUs.aspx" runat="server">About Us</a>|amp;nbsp; <a id="A2" href="~/Faq.aspx" runat="server" >FAQ</a>|amp;nbsp; <a id="A9" href="~/Feedback.aspx" runat="server">Feedback</a>|amp;nbsp;
                        <a href="~/contactus.aspx" runat="server">Contact Us</a></div>
                    <div class="empty" style="background: #f1f1f1">

                        <img height="25" alt="" src="~/Images/top_curve2.gif" width="32"  runat="server" /></div>
                    <div class="empty" style="width: auto; height: 25px; text-align: center">
                    </div>
                </div>
                <div class="empty" style="float: right; margin: 9px 0px 8px; ">
                    <img height="56" alt="" src="~/Images/paper.gif" width="286"  runat="server" /><asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" 
                            ShowStartingNode="False" />
                            </div>
                <div id="navigation"> 
                <div>
                <asp:Menu ID="MainMenu" runat="server" Orientation="Horizontal" MaximumDynamicDisplayLevels="0"
                DataSourceID="SiteMapDataSource1" DynamicEnableDefaultPopOutImage="False" StaticEnableDefaultPopOutImage="False">
                <StaticMenuStyle CssClass="menu" />
                <StaticMenuItemStyle CssClass="menuItem" />
                <StaticSelectedStyle CssClass="menuSelectedItem" />
                <DynamicMenuStyle CssClass="menuPopup" />
                <DynamicMenuItemStyle CssClass="menuPopupItem" Font-Strikeout="False" />
                <DynamicHoverStyle CssClass="menuPopupItem" />
                <StaticHoverStyle CssClass="menuItemHover" />
            </asp:Menu>
                </div>
            <div id="submenu" runat="server">
            <ul id="submenulist">
            <li><a id="home" href="~/AdminArea/HomeForAdmin.aspx" runat="server">Basic Info</a></li>
             <li><a id="A3" href="~/AdminArea/CreateAgent.aspx" runat="server">Create Agent</a></li>
              <li><a id="A4" href="~/AdminArea/All_Agents_info.aspx" runat="server">Agent List</a></li>
               <li><a id="A5" href="~/AdminArea/Deposit.aspx" runat="server">Deposite</a></li>
               <li><a id="A6" href="~/AdminArea/Agent_search.aspx" runat="server">Search Agent</a></li>
              <li><a id="A7" href="~/AdminArea/Bus_list.aspx" runat="server">Bus List</a></li>
               <li><a id="A8" href="~/AdminArea/feedback_list.aspx" runat="server">FeedBack List</a></li>
            </ul>
            </div>
             </div>
            </div>
        </div>
        <div>
            <table style="width: 100%;">
                <tr>
                    <td colspan="3">
                        <asp:ScriptManager ID="ScriptManager1" runat="server" />
                            <asp:UpdatePanel ID="up12" runat="server">
                            <ContentTemplate>
                                <table cellspacing="0" cellpadding="0" width="100%" border="0">
                                    <tbody>
                                        <tr>
                                            <td class="border-header" style="height: 25px;" valign="middle"
                                                align="left" width="600">
                                                Welcome <asp:LoginName ID="LoginName1" runat="server" />, Rs.<asp:Literal ID="litbal" runat="server" />
                                            </td>
                                            <td class="border-header-date" style="height: 25px" valign="middle" align="left"
                                                width="200">
                                                <asp:Literal ID="litdate" runat="server"></asp:Literal>
                                            </td>
                                        </tr>
                                    </tbody>
                                </table>
                            </ContentTemplate>
                        </asp:UpdatePanel>
                        <asp:ContentPlaceHolder ID="content1" runat="server">
                        </asp:ContentPlaceHolder>
                    </td>
                </tr>
                <tr>
                    <td colspan="3">
                        <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">
                        </asp:ContentPlaceHolder>
                    </td>
                </tr>
                <tr>
                    <td colspan="3">
                        <asp:ContentPlaceHolder ID="ContentPlaceHolder3" runat="server">
                        </asp:ContentPlaceHolder>
                    </td>
                </tr>
                <tr>
                    <td colspan="3">
                        <asp:ContentPlaceHolder ID="ContentPlaceHolder4" runat="server">
                        </asp:ContentPlaceHolder>
                    </td>
                </tr>
                <tr>
                    <td>
                        amp;nbsp;
                    </td>
                    <td>
                        amp;nbsp;
                    </td>
                    <td>
                        amp;nbsp;
                    </td>
                </tr>
            </table>
        </div>

            <div id="footer">
                <div id="footerlinks">
                    <div style="float: left">
                       Copyright © 2010, All rights reserved amp;nbsp; <span class="orange11">l</span> amp;nbsp; <a href="~/Privacypolicy.aspx"  runat="server">Privacy policy</a>amp;nbsp; <span class="orange11">
                            l</span> amp;nbsp; <a href="~/TermsandConditions.aspx"  runat="server">Terms and conditions</a>amp;nbsp;
                        <br />
                    </div>
                    <div style="float: right; text-align: right">
                       <asp:Label ID="lblCreatedBy" runat="server"></asp:Label>  
                    </div>                    
                </div>                
            <!--footer ends -->
            <div>
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>
            </div>
            </div>
        </div> 
    </form>
</body>
</html>
  

Комментарии:

1. Вероятно, в файле MasterPage.master.designer.cs уже существует элемент управления с именем head.

Ответ №1:

Может быть несколько причин:

  1. Где-то в вашем проекте есть другой класс, который также называется MasterPage2
  2. Вам необходимо очистить и перестроить ваш проект
  3. У вас есть элемент управления с именем head в вас master.cs и элемент управления с таким же именем в вашем master.designer.cs

Комментарии:

1. MasterPage2 — это класс внутри файла MasterPage.master.cs. Вы предлагаете мне изменить имя класса? Пожалуйста, посоветуйте!

2. Эта ошибка сохраняется даже при изменении имени класса на что-то другое. Он просто принимает это имя и отображает ошибку. Может ли это быть что-то в моем файле MasterPage.master.aspx?

3. Спасибо, но я немного заблудился. Из тех кодов, которые я опубликовал, возможно ли указать область? Может ли это быть причиной ошибки head? code <asp: ContentPlaceHolder ID=»head» runat=»server»></asp:ContentPlaceHolder> code

4. вы пробовали удалить protected ContentPlaceHolder head; из файла master.cs?

5. Да, я пробовал, и когда я это делаю, я получаю еще n ошибок

Ответ №2:

Вы вложены MasterPages ?.

ЕСЛИ это так, ошибка указывает на причину. У вас есть 2 head элемента на результирующей странице (объединенные). Помимо ошибки на стороне сервера, у вас, вероятно, будет неверно сформированный HTML-документ, который будет отрисован (2 набора <html/> объявлений и <head/> , <body/> и т.д. элементов).

Обратитесь к этому документу MSDN о том, как вложить MasterPages . В двух словах, вложенный MasterPage похож на «шаблонный» UserControl .

Hth…