توضیحات و دانلود

انتقال مقادیر بین فرم های وب در ASP.NET
0 0
انتقال مقادیر بین فرم های وب در ASP.NET

فرم های وب در ASP.NET مدل های مبتنی بر رویداد را برای توسعه دهندگان فراهم می كند. این طرح كلی برنامه درخواست شما را ساده می كند، اما برخی از مشكلات خود دارد. برای مثال، در ASP سنتی شما می توانید به راحتی از یك صفحه ASP به یك صفحه ASP دیگر با استفاده از POST  اطلاعات را منتقل كنید.اما این مورد در ASP.NET امكان پذیر نیست. با این حال، برخی از راه هایی وجود دارد كه می توان برای غلبه بر این وضعیت استفاده كرد. این مقاله به بررسی امكانات مختلف برای انجام این كار می پردازد. به طور خاص ما چگونگی انتقال مقادیر را با استفاده از querystring ,Session و Server.Transfer را بررسی خواهیم كرد.

با استفاده از Querystring

Querystring  مقادیر را در صفحات انتقال می دهد. مزیت اصلی این روش استفاده بسیار ساده از آن است. با این حال، اما عیب اصلی ای روش قابل مشاهده بودن اطلاعات در مرورگر است و همچنین شما نمی توانید اشیا را به این شیوه منتقل كنید. این روش زمانی مناسب است كه شما می خواهید تعداد كمی از مقادیری را كه لازم نیست از دیگران محافظت شود، منتقل كنید. برای اجرای این روش شما این مراحل را دنبال می كنید:

  • یك پروژه از نوع فرم وب ایجاد كنید
  • و فرم را بصورت زیر طراحی كنید
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div> 
         نام :<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        ایمیل :<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="انتقال" OnClick="Button1_Click" />
    </div>
    </form>
</body>
</html>

و در رویداد Button كد زیر را بنویسید :

protected void Button1_Click(object sender, EventArgs e)
    {
        string url;
        url = "Default2.aspx?name=" +
            TextBox1.Text + "&email=" +
            TextBox2.Text;
        Response.Redirect(url);
    }

و یك فرم دیگر با نام Default2 ایجاد كنیدمانند زیر:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
 
<!DOCTYPE html>
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      نام :  <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br />
      ایمیل :<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>

و در رویداد Page_Load كد زیر را بنویسید

protected void Page_Load(object sender, EventArgs e)
   {
       Label1.Text = Request.QueryString["name"];
       Label2.Text = Request.QueryString["email"];
   }

نكته : برای گرفتن مقدار از  Request.QueryString["name"] استفاده میكنیم

پروژه را اجرا كنید و مقدار نام و ایمیل را وارد كنید و روی دكمه انتقال كلیك كنید و نتیجه را ببینید.

با استفاده از Session

این روش دیگری برای انتقال مقادیر در صفحات است. در اینجا شما مقدار كنترل را در متغیرهای  Session ذخیره می كنید و آنها را در فرم وب دیگری می گیرید. با این حال، همانطور كه می دانید ذخیره داده های بیش از حد در Session  می تواند سربار بر روی سرور باشد ولی مزیت اصلی آن پنهان بودن مقدار از دید كاربر است. بنابراین، شما باید از این روش با دقت استفاده كنید. دنباله ای از مراحل به شرح زیر است:

  • یك پروژه از نوع فرم وب ایجاد كنید
  • و فرم را مانند فرم بالا طراحی كنید
  • در رویداد كلیك Button، متغیرهای Session را اضافه می كنیم و آنها را برای كنترل مقادیر تنظیم می كنیم
  • Response.Redirect به فرم دیگر
  • در آن فرم دسترسی متغیرهای Session و در صورت لزوم آنها را حذف كنید

كد زیر این را در عمل نشان می دهد:

protected void Button1_Click(object sender, EventArgs e)
    {
        
        Session["name"] = TextBox1.Text;
        Session["email"] = TextBox2.Text;
        Server.Transfer("Default2.aspx");
    }

و یك فرم دیگر مانند Default2  در بالا ایجاد كنید وكد زیر در رویداد لود فرم بنویسید.

Protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = Session["name"].ToString();
        Label2.Text = Session["email"].ToString();
        Session.Remove("name");
        Session.Remove("email");
    }

فقط دقت داشته باشید بعد ازاستفاده از Session باید آن را مانند بالا حذف كنید.

با استفاده از Server.Transfer

دو صفحه مانند بالا طراحی كنید و در صفحه اول كدهای زیر را بنویسید .

public string Name
    {
        get
        {
            return TextBox1.Text;
        }
    }
 
    public string EMail
    {
        get
        {
            return TextBox2.Text;
        }
    }

و در رویداد On-Click دكمه كد زیر رابنویسید .

protected void Button1_Click(object sender, EventArgs e)
   {
        Server.Transfer("Default2.aspx");
   }

در فرو لود فرم Default2 كد زیر را بنویسید.

protected void Page_Load(object sender, EventArgs e)
   {
     
       WebForm1 wf1;
       wf1 = (WebForm1)Context.Handler;
       Label1.Text = wf1.Name;
       Label2.Text = wf1.EMail;
   }

خلاصه

در این مقاله سه راه مختلف برای انتقال اطلاعات بین دو فرم وب ASP.NET را بررسی كردیم. این سه روش عبارتند از: Querystring، Sessionو Server.Transfer ارائه راه هایی برای انتقال مقادیر ما در سراسر صفحات. ما همچنین دیدگاههای مثبت و منفی هر روش را دیدیم.

امیدوارم این مقاله مفید بوده باشد.

 


دانلود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

لینک های دانلود

ارسال نظر
ارسال پیام به :