I'd like to add designed by myself web control "TextBox" on my page.
But something wrong to appear message " Control 'ctl13' of type 'TextBox must be placed inside a form tag with runat=server. " while performing SaveImage method.
Why the TextBox control can not add to my page, but Label control do.
My code is listed as follows.
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class AddMetaData : System.Web.UI.Page
{
System.Web.UI.WebControls.Image[] images = new System.Web.UI.WebControls.Image[5];
System.Web.UI.WebControls.Label[,] labels = new Label[5, 5];
System.Web.UI.WebControls.TextBox[,] textboxs = new System.Web.UI.WebControls.TextBox[5, 5];
protected void Page_Load(object sender, EventArgs e)
{
if (PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack == true)
this.SaveImages();
}
}
private System.Boolean SaveImages()
{
//loop through the files uploaded
System.Web.HttpFileCollection _files = System.Web.HttpContext.Current.Request.Files;
//Message to the user
System.Text.StringBuilder _message = new System.Text.StringBuilder("Files Uploaded:<br>");
try
{
for (System.Int32 _iFile = 0; _iFile < _files.Count; _iFile++)
{
// Check to make sure the uploaded file is a jpg or gif
System.Web.HttpPostedFile _postedFile = _files[_iFile];
System.String _fileName, _fileExtension;
_fileName = System.IO.Path.GetFileName(_postedFile.FileName);
_fileExtension = System.IO.Path.GetExtension(_fileName);
//現在只先做jpeg
if ((_fileExtension == ".jpg") || (_fileExtension == ".JPG") || (_fileExtension == ".jpeg") || (_fileExtension == ".JPEG"))
{
//Save File to the proper directory
_postedFile.SaveAs(System.Web.HttpContext.Current. Request.MapPath("jpgs/") + _fileName);
//textboxs[_iFile, 0].Text = _fileName;
txtTitle.Text = _fileName;
labels[_iFile,0].Text = "Album";
labels[_iFile, 1].Text = "Name";
labels[_iFile, 2].Text = "Tag";
labels[_iFile, 3].Text = "Description";
textboxs[_iFile, 0].Text ="";
textboxs[_iFile, 1].Text = _fileName;
textboxs[_iFile, 2].Text ="";
textboxs[_iFile, 3].Text ="";
images[_iFile].ImageUrl = "./jpgs/" + _fileName;
this.Controls.Add(images[_iFile]);
this.Controls.Add(labels[_iFile, 0] );
this.Controls.Add(labels[_iFile, 1] );
this.Controls.Add(labels[_iFile, 2] );
this.Controls.Add(labels[_iFile, 3] );
this.Controls.Add(textboxs[_iFile, 0]);
this.Controls.Add(textboxs[_iFile, 1]);
this.Controls.Add(textboxs[_iFile, 2]);
this.Controls.Add(textboxs[_iFile, 3]);
_message.Append(_fileName + "<BR>");
}
else
{
if (_fileExtension != "")
{
_message.Append(_fileName + " <font color=\"red\">failed!! Only .gif and .jpg images allowed!</font> <BR>");
}
}
}
Label5.Text = _message.ToString();
return true;
}
catch (System.Exception Ex)
{
Label1.Text = Ex.Message;
return false;
}
}
#region Web Form Designer generated code
override protected void OnInit(System.EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
for (int i = 0; i < 5; i++) {
images[i] = new Image();
for (int j = 0; j < 5; j++)
{
labels[i,j] = new Label();
textboxs[i,j] = new TextBox();
}
}
InitializeComponent();
base.OnInit(e);
}
Have any know how to solve this problem or something else to replace controls of TextBox of use.
Thank you.
Jim