开发者

Type '_Default' already contains a definition

I am developing a C# VS 2008 / SQL Server 2008 website. I have a Gridview. I included the Default.aspx and aspx.cs files below. But when I build this I get the below error:

The Type '_Default' already contains a definition for 'btnOWrite'

What do I need to do to fix this? I am not getting an开发者_如何学JAVAy errors now; just that this grid does not show up. Thanks!

ASPX file:

<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Title="Untitled Page" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="Server">
    <asp:Panel runat="server" ID="AuthenticatedMessagePanel">
        <asp:Label runat="server" ID="WelcomeBackMessage"></asp:Label>
        <table>
            <tr>
                <td>
                    <asp:Label ID="tableLabel" runat="server" Font-Bold="True" Text="Select target table:"></asp:Label>
                </td>
                <td>
                    <asp:Label ID="inputLabel" runat="server" Font-Bold="True" Text="Select input file:"></asp:Label>
                </td>
            </tr>
            <tr>
                <td valign="top">
                    <asp:Label ID="feedbackLabel" runat="server"></asp:Label>
                    <asp:SqlDataSource ID="SelectTables" runat="server" ConnectionString="<%$ ConnectionStrings:AdventureWorks3_SelectTables %>"
                        SelectCommand="getTableNames" SelectCommandType="StoredProcedure">
                        <SelectParameters>
                            <asp:QueryStringParameter DefaultValue="Person" Name="SchemaName" QueryStringField="SchemaName"
                                Type="String" />
                        </SelectParameters>
                    </asp:SqlDataSource>
                    <asp:GridView ID="GridView1" DataSourceID="SelectTables" runat="server" Style="width: 400px;"
                        CellPadding="4" ForeColor="#333333" GridLines="None" OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
                        AutoGenerateSelectButton="True" DataKeyNames="TABLE_NAME">
                        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
                        <Columns>
                            <asp:BoundField HeaderText="TABLE_NAME" DataField="TABLE_NAME" />
                        </Columns>
                        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
                        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
                        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
                        <EditRowStyle BackColor="#999999" />
                        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
                    </asp:GridView>
                </td>
                <td valign="top">
                    <input id="uploadFile" type="file" size="26" runat="server" name="uploadFile" title="UploadFile" class="greybar" enableviewstate="True" />
                </td>
            </tr>
        </table>

        <table>
<tr>
<td style="width:150px; height:50px"></td>
<td valign="bottom" style="width:150px; height:50px">
     <input id="btnOWrite" type="submit" value="Overwrite Data" runat="server" class="greybar"
                      onserverclick="btnOWrite_Click" name="btnOWrite" />&nbsp;
                      </td>
<td style="width:100px"></td>

<td valign="bottom" style="width:150px; height:50px">
    <input id="btnAppend" type="submit" value="Append Data" runat="server" class="greybar" onserverclick="btnAppend_Click" name="btnAppend" /> 
</td>
</tr>
</table>

    </asp:Panel>
    <asp:Panel runat="Server" ID="AnonymousMessagePanel">
        <asp:HyperLink runat="server" ID="lnkLogin" Text="Log In" NavigateUrl="~/Login.aspx">
        </asp:HyperLink>
    </asp:Panel>
</asp:Content>

ASPX.CS file:

public partial class _Default : System.Web.UI.Page

//namespace AddFileToSQL
{
        //protected System.Web.UI.HtmlControls.HtmlInputFile uploadFile;
        protected System.Web.UI.HtmlControls.HtmlInputButton btnOWrite;
        protected System.Web.UI.HtmlControls.HtmlInputButton btnAppend;
        protected System.Web.UI.WebControls.Label Label1;
        protected static string inputfile = "";
        public static string targettable;
        public static string selection;

        // Number of controls added to view state
        protected int default_NumberOfControls
        {
            get
            {
                if (ViewState["default_NumberOfControls"] != null)
                {
                    return (int)ViewState["default_NumberOfControls"];
                }
                else
                {
                    return 0;
                }
            }
            set
            {
                ViewState["default_NumberOfControls"] = value;
            }
        }

        protected void uploadFile_onclick(object sender, EventArgs e)
        {
        }

        protected void Load_GridData()
        {
            //GridView1.DataSource = ADONET_methods.DisplaySchemaTables();
            //GridView1.DataBind();
        }

        protected void btnOWrite_Click(object sender, EventArgs e)
        {
            if (uploadFile.PostedFile.ContentLength > 0)
            {
                feedbackLabel.Text = "You do not have sufficient access to overwrite table records.";
            }
            else
            {
                feedbackLabel.Text = "This file does not contain any data.";
            }
        }

        protected void btnAppend_Click(object sender, EventArgs e)
        {
            string fullpath = Page.Request.PhysicalApplicationPath;

            string path = uploadFile.PostedFile.FileName;

            if (File.Exists(path))
            {
                // Create a file to write to.
                try
                {
                    StreamReader sr = new StreamReader(path);
                    string s = "";
                    while (sr.Peek() > 0)
                        s = sr.ReadLine();
                    sr.Close();
                }
                catch (IOException exc)
                {
                    Console.WriteLine(exc.Message + "Cannot open file.");
                    return;
                }
            }

            if (uploadFile.PostedFile.ContentLength > 0)
            {

                inputfile = System.IO.File.ReadAllText(path);
                Session["Message"] = inputfile;
                Response.Redirect("DataMatch.aspx");
            }
            else
            {
                feedbackLabel.Text = "This file does not contain any data.";
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.IsAuthenticated)
            {
                WelcomeBackMessage.Text = "Welcome back, " + User.Identity.Name + "!";

                // Reference the CustomPrincipal / CustomIdentity
                CustomIdentity ident = User.Identity as CustomIdentity;
                if (ident != null)
                    WelcomeBackMessage.Text += string.Format(" You are the {0} of {1}.", ident.Title, ident.CompanyName);

                AuthenticatedMessagePanel.Visible = true;
                AnonymousMessagePanel.Visible = false;
                if (!Page.IsPostBack)
                {
                    Load_GridData();
                }                                
            }
            else
            {
                AuthenticatedMessagePanel.Visible = false;
                AnonymousMessagePanel.Visible = true;
            }
        }

        protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            GridViewRow row = GridView1.SelectedRow;
            targettable = row.Cells[2].Text;
        }
    }


when you have a control made declaritively such as

<asp:Button ID="someID" runat="server" />

it instantiates a private member variable named someID. If you look at your class, you'll see this line

protected System.Web.UI.HtmlControls.HtmlInputButton btnOWrite;

Basically, you've declared 2 controls with the same name. One in the mark up and one in the code behind. Just delete the declaration from your code behind file.


Probably, class in file Default.Designer.cs contains two declarations of btnOWrite.

Try to delete at least one, or both variables.

Or if your project is a web application, delete whole designer file and in the context menu of Default.aspx choose 'Convert to web application', this will regenerate designer file.


If when adding new files to an existing web project a file (.aspx) gets added and them it is moved in correctly and a reference to the file is added in the new location without deleing the old reference this error will occur. search the entire project (search files) for the duplicated symbol and this will show which files the duplicate reference exists in.


For me it was due to that I copied my Site.Master file, and renamed it to create a duplicate of it in the same project, so the class name in the designer.cs file was same for both the copies of Site.Master, I changed one of the class name for one of them in the designer.cs file and it worked.

Hope this helps someone.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜