rational unified process
شنبه 14 دی 1392, 00:07 صبح
سلام
برنامه زیر رو در نظر بگیرید.برنامه بدون بکارگیری اژاکس مشکلی نداره ولی با اژاکس کار نمیکنه.چرا؟
صفحه کد بیهاند یوزر کنترل رو نگاه کنید و بریک پوینت بذارید(در حالتی که از ScriptManagerProxy استفاده میکنید) خواهید دید که شرط fileOK محقق نمیشه بلکه دستور
else
{
lblResult.Text = "مجاز به استفاده از این فرمت عکس نیستید یا اندازه عکس بیش از یک مگابایت است";
}
محقق میشه چرا؟
به عبارت واضحتر چرا FileUpload1.HasFile فالز است؟
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register src="admin/addproductions.ascx" tagname="Product" tagprefix="uc1" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<%--<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>--%>
<uc1:Product ID="Product1" runat="server" />
</div>
</form>
</body>
</html>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AddProductions.ascx.cs" Inherits="Admin_AddProductions" %>
<!------------------------------------------------------------------------>
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!------------------------------------------------------------------------>
<div align="center" dir="rtl">
<table>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="ای دی دسته بندی محصول"></asp:Label>
</td>
<td>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1"
DataTextField="CategoryName" DataValueField="CategoryID">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="نام محصول"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtProName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtProName"
Display="Dynamic" ErrorMessage="نام محصول را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label4" runat="server" Text="قیمت"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCast" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtCast"
Display="Dynamic" ErrorMessage="قیمت را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text="عکس یا فیلم"></asp:Label>
</td>
<td>
<asp:FileUpload ID="FileUpload1" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label6" runat="server" Text="توضیحات"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtComment"
Display="Dynamic" ErrorMessage="توضیحات را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label7" runat="server" Text="موجودی"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtStock" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtStock"
Display="Dynamic" ErrorMessage="موجودی را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
</table>
<br />
<!---------------------->
<%-- <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager> --%>
<%--<asp:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="txtComment">
</asp:HtmlEditorExtender>--%>
<!------------------------------------------------------------------------>
<asp:Button ID="btnAddProductions" runat="server" Text="اضافه کردن محصولات" OnClick="btnAddProductions_Click" />
<!------------------------------------------------------------------------>
<asp:Label ID="lblResult" runat="server" ForeColor="Red"></asp:Label>
<br />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
<!------------------------------------------------------------------------>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [tbl_ProductCategory]" >
</asp:SqlDataSource>
</div>
<!------------------------------------------------------------------------>
</ContentTemplate>
</asp:UpdatePanel>
<!------------------------------------------------------------------------>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;
public partial class Admin_AddProductions : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAddProductions_Click(object sender, EventArgs e)
{
//-----------------------------------------------------------
bool fileOK = false;
string[] allow = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower(). Trim();
if (FileUpload1.HasFile)
{
for (int i = 0; i < allow.Length; i++)
{
if (fileExtension == allow[i] && FileUpload1.FileBytes.Length < 1048576)
{
fileOK = true;
}
}
}
//-----------------------------------------------------------
if (fileOK == true)
{
//FileUpload1.SaveAs(Server.MapPath(Path.Combine("~/images/",FileUpload1.FileName));
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/images/" + FileUpload1.FileName));
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["cn"].ConnectionString);
string query = "insert into tbl_production values (@proCatId,@proName,@proCast,@proPic,@proComment,@ proStock)";
SqlCommand cm = new SqlCommand(query, cn);
cm.Parameters.AddWithValue("proCatId", DropDownList2.SelectedValue);
cm.Parameters.AddWithValue("proName", txtProName.Text.Trim().ToLower());
cm.Parameters.AddWithValue("proCast", txtCast.Text.Trim());
cm.Parameters.AddWithValue("proPic", "~/images/" + FileUpload1.FileName.Trim().ToLower());
cm.Parameters.AddWithValue("proComment", txtComment.Text);
cm.Parameters.AddWithValue("proStock", txtStock.Text);
cn.Open();
cm.ExecuteNonQuery();
lblResult.Text = "محصول جدید در دسته بندی مورد نظر ثبت شد";
cn.Close();
}
else
{
lblResult.Text = "مجاز به استفاده از این فرمت عکس نیستید یا اندازه عکس بیش از یک مگابایت است";
}
//-----------------------------------------------------------
}
}
برنامه زیر رو در نظر بگیرید.برنامه بدون بکارگیری اژاکس مشکلی نداره ولی با اژاکس کار نمیکنه.چرا؟
صفحه کد بیهاند یوزر کنترل رو نگاه کنید و بریک پوینت بذارید(در حالتی که از ScriptManagerProxy استفاده میکنید) خواهید دید که شرط fileOK محقق نمیشه بلکه دستور
else
{
lblResult.Text = "مجاز به استفاده از این فرمت عکس نیستید یا اندازه عکس بیش از یک مگابایت است";
}
محقق میشه چرا؟
به عبارت واضحتر چرا FileUpload1.HasFile فالز است؟
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register src="admin/addproductions.ascx" tagname="Product" tagprefix="uc1" %>
<!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>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<%--<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>--%>
<uc1:Product ID="Product1" runat="server" />
</div>
</form>
</body>
</html>
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AddProductions.ascx.cs" Inherits="Admin_AddProductions" %>
<!------------------------------------------------------------------------>
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!------------------------------------------------------------------------>
<div align="center" dir="rtl">
<table>
<tr>
<td>
<asp:Label ID="Label2" runat="server" Text="ای دی دسته بندی محصول"></asp:Label>
</td>
<td>
<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" DataSourceID="SqlDataSource1"
DataTextField="CategoryName" DataValueField="CategoryID">
</asp:DropDownList>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label3" runat="server" Text="نام محصول"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtProName" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtProName"
Display="Dynamic" ErrorMessage="نام محصول را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label4" runat="server" Text="قیمت"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtCast" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtCast"
Display="Dynamic" ErrorMessage="قیمت را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label5" runat="server" Text="عکس یا فیلم"></asp:Label>
</td>
<td>
<asp:FileUpload ID="FileUpload1" runat="server" />
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label6" runat="server" Text="توضیحات"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtComment" runat="server" TextMode="MultiLine"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtComment"
Display="Dynamic" ErrorMessage="توضیحات را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label7" runat="server" Text="موجودی"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtStock" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" ControlToValidate="txtStock"
Display="Dynamic" ErrorMessage="موجودی را وارد نکرده اید" SetFocusOnError="True">*</asp:RequiredFieldValidator>
</td>
</tr>
</table>
<br />
<!---------------------->
<%-- <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager> --%>
<%--<asp:HtmlEditorExtender ID="HtmlEditorExtender1" runat="server" TargetControlID="txtComment">
</asp:HtmlEditorExtender>--%>
<!------------------------------------------------------------------------>
<asp:Button ID="btnAddProductions" runat="server" Text="اضافه کردن محصولات" OnClick="btnAddProductions_Click" />
<!------------------------------------------------------------------------>
<asp:Label ID="lblResult" runat="server" ForeColor="Red"></asp:Label>
<br />
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
<!------------------------------------------------------------------------>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [tbl_ProductCategory]" >
</asp:SqlDataSource>
</div>
<!------------------------------------------------------------------------>
</ContentTemplate>
</asp:UpdatePanel>
<!------------------------------------------------------------------------>
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.IO;
public partial class Admin_AddProductions : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnAddProductions_Click(object sender, EventArgs e)
{
//-----------------------------------------------------------
bool fileOK = false;
string[] allow = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" };
string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower(). Trim();
if (FileUpload1.HasFile)
{
for (int i = 0; i < allow.Length; i++)
{
if (fileExtension == allow[i] && FileUpload1.FileBytes.Length < 1048576)
{
fileOK = true;
}
}
}
//-----------------------------------------------------------
if (fileOK == true)
{
//FileUpload1.SaveAs(Server.MapPath(Path.Combine("~/images/",FileUpload1.FileName));
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/images/" + FileUpload1.FileName));
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["cn"].ConnectionString);
string query = "insert into tbl_production values (@proCatId,@proName,@proCast,@proPic,@proComment,@ proStock)";
SqlCommand cm = new SqlCommand(query, cn);
cm.Parameters.AddWithValue("proCatId", DropDownList2.SelectedValue);
cm.Parameters.AddWithValue("proName", txtProName.Text.Trim().ToLower());
cm.Parameters.AddWithValue("proCast", txtCast.Text.Trim());
cm.Parameters.AddWithValue("proPic", "~/images/" + FileUpload1.FileName.Trim().ToLower());
cm.Parameters.AddWithValue("proComment", txtComment.Text);
cm.Parameters.AddWithValue("proStock", txtStock.Text);
cn.Open();
cm.ExecuteNonQuery();
lblResult.Text = "محصول جدید در دسته بندی مورد نظر ثبت شد";
cn.Close();
}
else
{
lblResult.Text = "مجاز به استفاده از این فرمت عکس نیستید یا اندازه عکس بیش از یک مگابایت است";
}
//-----------------------------------------------------------
}
}