#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:
Может быть несколько причин:
- Где-то в вашем проекте есть другой класс, который также называется
MasterPage2
- Вам необходимо очистить и перестроить ваш проект
- У вас есть элемент управления с именем 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…