Solved

Form is not working with backend code

Posted on 2011-09-19
13
531 Views
Last Modified: 2012-05-12
IN changing the file with your suggestions I now get an error on the frontend.
Not sure how to handle this: It looks like i need to name the labels but when I try it gives me even more errors...Stuck.
Error

Parser Error Message: '' is not a valid identifier.

Source Error:

Line 6:        <body MS_POSITIONING="GridLayout">
Line 7:              <form id="Form1" method="post" runat="server" enctype="multipart/form-data">
Line 8:                          <asp:label id="" runat="server" Font-Bold="True">Please Select the Data File you will be uploading:</asp:label>
Line 9:                          <input id="filMyFile" type="file" runat="server">
Line 10:                         <p></p>

<%@ Page language="c#" AutoEventWireUp="false" Codebehind="default.aspx.cs" Inherits="FileUpload.WebForm1" Src="default.aspx.cs" %>

<HTML>
	<HEAD>
	</HEAD>
	<body MS_POSITIONING="GridLayout">
		<form id="Form1" method="post" runat="server" enctype="multipart/form-data">
				<asp:label id="" runat="server" Font-Bold="True">Please Select the Data File you will be uploading:</asp:label>
				<input id="filMyFile" type="file" runat="server">
				<p></p>
                <asp:label id="lblnotes1" runat="server" Font-Bold="True">Please Select the Data File you will be uploading:</asp:label>
				<input id="lblnotes1" type="Text" runat="server">
				<asp:button id="cmdSend" runat="server" Text="Send"/>
				<p></p>
				<asp:Label id="lblInfo" runat="server" Font-Bold="True" Visible="false"></asp:Label>
				<p></p>
				<table>
						<tr>
							<td>
								<asp:Label id="lblText1" runat="server" Font-Bold="True" Visible="True">This file will be placed in the FSU folder on the CEDB server.</asp:Label>
							</td>
						<tr>
							<td>
								<asp:Label id="lblText2" runat="server" Font-Bold="True" Visible="True">This file and all of its meta data will be stored in uploadedData database</asp:Label>
							</td>
							</tr>
						</tr>
						<tr>
							<td>
								<asp:Image id="imgFile" runat="server" Visible="False"></asp:Image>
							</TD>
							<td>
								<asp:Image id="imgDB" runat="server" Visible="False"></asp:Image>
							</td>
						</TR>
				</TABLE>
		</FORM>
	</body>
</HTML>

Open in new window

0
Comment
Question by:Tagom
  • 8
  • 5
13 Comments
 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36562692
<asp:label id=""  

needs to have an identifier.
0
 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36562698
And if you're not using anything in code behind, it doesn't matter, you can just call it

<asp:label id="label1" ....

and it'll be fine.
0
 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36562701
(line 8, btw)
0
 

Author Comment

by:Tagom
ID: 36563069
I did try this method
When I fill in the names of the label I get the following error
Parser Error Message: The base class includes the field 'lblnotes1', but its type (System.Web.UI.WebControls.Label) is not compatible with the type of control (System.Web.UI.HtmlControls.HtmlInputText).

Source Error:

Line 10:                         <p></p>
Line 11:                 <asp:label id="lblnotes" runat="server" Font-Bold="True">Please Select the Data File you will be uploading:</asp:label>
Line 12:                         <input id="lblnotes1" type="Text" runat="server">
Line 13:                         <asp:button id="cmdSend" runat="server" Text="Send"/>
Line 14:                         <p></p>


Source File: /hgdeposition/DataUpload/default.aspx    Line: 12

In the database the column notes is a text field -
I am not sure what else to call this input field on the form. So I am wondering if I have line 20 coded incorrectly in the backend file
Here is the back code
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data;
using System.Data.OleDb;

namespace FileUpload
{

    public class WebForm1 : System.Web.UI.Page
    {
        private const string MDBFILE = "FileUpload.mdb";

        protected Label lblFile;
        protected HtmlInputFile filMyFile;
        protected System.Web.UI.WebControls.Label lblInfo;
        protected System.Web.UI.WebControls.Label lblnotes1;
        protected System.Web.UI.WebControls.Button cmdSend;
        protected System.Web.UI.WebControls.Image imgFile;
        protected System.Web.UI.WebControls.Image imgDB;
        protected System.Web.UI.WebControls.Label lblText1;
        protected System.Web.UI.WebControls.Label lblText2;

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);
            this.cmdSend.Click += new System.EventHandler(this.cmdSend_Click);
        }

        private void Page_Load(object sender, System.EventArgs e)
        {
            // Check if FileID was passed to this page as a parameter
            if (Request.QueryString["FileID"] != null)
            {
                // Get the file out of database and return it to requesting client
                ShowTheFile(Convert.ToInt32(Request.QueryString["FileID"]));
            }

        }

        // Processes click on our cmdSend button
        private void cmdSend_Click(object sender, System.EventArgs e)
		{
			// Check to see if file was uploaded
			if( filMyFile.PostedFile != null )
			{
				// Get a reference to PostedFile object
				HttpPostedFile myFile = filMyFile.PostedFile;

				// Get size of uploaded file
				int nFileLen = myFile.ContentLength; 

				// make sure the size of the file is > 0
				if( nFileLen > 0 )
				{
					// Allocate a buffer for reading of the file
					byte[] myData = new byte[nFileLen];

					// Read uploaded file from the Stream
                    myFile.InputStream.Read(myData, 0, nFileLen);

					// Create a name for the file to store
					string strFilename = Path.GetFileName(myFile.FileName);

					// Write data into a file
                    WriteToFile(Server.MapPath(@"FSU\" + strFilename), ref myData);
                    
                    

					// Store it in database
                    int nFileID = WriteToDB(strFilename, myFile.ContentType, ref myData, lblnotes1.Text);

					// Set label's text
					lblInfo.Text = 
						"Filename: " + strFilename + "<br>" + 
						"Size: " + nFileLen.ToString() + "<br>";
						

					// Set URL of the the object to point to the file we've just saved
					imgFile.ImageUrl = strFilename;
					imgFile.ToolTip = "This file will be stored to the FSU folder as file.";
					lblText1.Text = imgFile.ImageUrl;

					// Set URL of the the object to point to the this script with ID of the file
					// that will retrieve file out the database
					imgDB.ImageUrl = GetMyName() + "?FileID=" + nFileID.ToString();
					imgDB.ToolTip = "This file Will be stored in the uploadData database.";
					lblText2.Text = imgDB.ImageUrl;
					
					
                    // show the images and text
					imgFile.Visible = false;
					imgDB.Visible = false;
					lblText1.Visible = true;
					lblText2.Visible = true;
                    
				}
			}
		}

        // Writes file to current folder
        private void WriteToFile(string strPath, ref byte[] Buffer)
        {
            // Create a file
            FileStream newFile = new FileStream(strPath, FileMode.Create);

            // Write data to the file
            newFile.Write(Buffer, 0, Buffer.Length);

            // Close file
            newFile.Close();
        }

        // Generates database connection string
        private string GetConnectionString()
        {
            return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath(MDBFILE) + ";";
        }

        // Writes file to the database
        private int WriteToDB(string strName, string strType, ref byte[] Buffer, string strNotes)
        {
            int nFileID = 0;

            // Create connection
            OleDbConnection dbConn = new OleDbConnection(GetConnectionString());

            // Create Adapter
            OleDbDataAdapter dbAdapt = new OleDbDataAdapter("SELECT * FROM tblFile", dbConn);

            // We need this to get an ID back from the database
            dbAdapt.MissingSchemaAction = MissingSchemaAction.AddWithKey;

            // Create and initialize CommandBuilder
            OleDbCommandBuilder dbCB = new OleDbCommandBuilder(dbAdapt);

            // Open Connection
            dbConn.Open();

            // New DataSet
            DataSet dbSet = new DataSet();

            // Populate DataSet with data
            dbAdapt.Fill(dbSet, "tblFile");

            // Get reference to our table
            DataTable dbTable = dbSet.Tables["tblFile"];

            // Create new row
            DataRow dbRow = dbTable.NewRow();

            // Store data in the row
            dbRow["FileName"] = strName;
            dbRow["FileSize"] = Buffer.Length;
            dbRow["ContentType"] = strType;
            dbRow["FileData"] = Buffer;
            dbRow["uploadDate"] = DateTime.Now;
            dbRow["Notes"] = strNotes;

            // Add row back to table
            dbTable.Rows.Add(dbRow);

            // Update data source
            dbAdapt.Update(dbSet, "tblFile");

            // Get newFileID
            if (!dbRow.IsNull("FileID"))
                nFileID = (int)dbRow["FileID"];

            // Close connection
            dbConn.Close();

            // Return FileID
            return nFileID;
        }

        // Read file out of the database and returns it to client
        private void ShowTheFile(int FileID)
        {
            // Define SQL select statement
            string SQL = "SELECT FileSize, FileData, ContentType, Notes FROM tblFile WHERE FileID = "
                        + FileID.ToString();

            // Create Connection object
            OleDbConnection dbConn = new OleDbConnection(GetConnectionString());

            // Create Command Object
            OleDbCommand dbComm = new OleDbCommand(SQL, dbConn);

            // Open Connection
            dbConn.Open();

            // Execute command and receive DataReader
            OleDbDataReader dbRead = dbComm.ExecuteReader();

            // Read row
            dbRead.Read();

            // Clear Response buffer
            Response.Clear();

            // Set ContentType to the ContentType of our file
            Response.ContentType = (string)dbRead["ContentType"];

            // Write data out of database into Output Stream
            Response.OutputStream.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);

            // Close database connection
            dbConn.Close();

            // End the page
            Response.End();
        }

        // Reads the name of current web page
        private string GetMyName()
        {
            // Get the script name
            string strScript = Request.ServerVariables["SCRIPT_NAME"];

            // Get position of last slash
            int nPos = strScript.LastIndexOf("/");

            // Get everything after slash
            if (nPos > -1)
                strScript = strScript.Substring(nPos + 1);

            return strScript;
        }
    }
}

Open in new window

0
 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36563162
protected System.Web.UI.WebControls.Label lblnotes1;

needs to be

protected System.Web.UI.HtmlControls.HtmlInputText lblnotes1;

0
 

Author Comment

by:Tagom
ID: 36563442
do you by chance have a link with a good summary of input control types
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36563468
Yeah, I verified it here:

http://www.w3schools.com/ASPNET/aspnet_refhtmlcontrols.asp

You can also intellisense / navigate it in your code behind, just type
protected System.Web.UI.HtmlControls.
and the dot at the end, and that'll bring up the list of items in there.
0
 

Author Comment

by:Tagom
ID: 36563474
now i get this error - been chasing this down all morning! appreciate your help

Compiler Error Message: CS0117: 'System.Web.UI.HtmlControls.HtmlInputText' does not contain a definition for 'Text'

Source Error:

Line 78:
Line 79:                               // Store it in database
Line 80:                     int nFileID = WriteToDB(strFilename, myFile.ContentType, ref myData, lblnotes1.Text);
Line 81:
Line 82:                               // Set label's text
0
 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36563484
Also, remember there is a difference in ASP.NET input types, and the classic HTML input types. Whenever possible, you want to use the ASP.NET input types (<asp:TextBox for instance), as they provide more flexibility and functionality. There's also <asp:FileUpload which works pretty well.

Cheers!
0
 
LVL 7

Accepted Solution

by:
NauticalNonsense earned 500 total points
ID: 36563502
hahhahaha, we were typing at the same time...
asp:TextBox has a .Text on it, I believe that your HtmlInputText is a .Value
Yeah, it's .Value for that control.
0
 

Author Closing Comment

by:Tagom
ID: 36563609
It has been a long time since I have had to program in .asp of any kind!
Works....Thank you so much!
So I could use a good tutorial for asp.net
The next step is adding a Boolean column  to the database so they can keep up with if file is complete :
I need to add a checkbox to the form and the backEnd.
0
 
LVL 7

Expert Comment

by:NauticalNonsense
ID: 36563940
You're very welcome, thanks for the grade!

Your checkbox should be mostly straightforward, you'll use
<asp:CheckBox id="ShowInNewWindow" (or whatever it is,

and then on the back side you can reference it like this:

if (ShowInNewWindow.Checked)
{ do stuff }
else
{ do other stuff }

Or bind that ShowInNewWindow.Checked to any boolean directly

 dbRow["ShowInNewWindow"] = ShowInNewWindow.Checked;

0
 

Author Comment

by:Tagom
ID: 36564049
I am going to open a new case as this is not working and it will give you the points.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
The goal of this video is to provide viewers with basic examples to understand and use switch statements in the C programming language.
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…

759 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now