PDA

View Full Version : آموزش: ارسال پارامتر به کمک Query String



dehqhani
پنج شنبه 12 تیر 1393, 09:03 صبح
سلام

در اینجا از اساتبد میخوام که نحوه ارسال و دریافت یک Query String را بطور کامل برای افراد مبتدی اموزش بدن

nice_boy_a
پنج شنبه 12 تیر 1393, 10:27 صبح
سلام. با یه مثال خیلی ساده و مختصر توضیح میدم:
دو تا textBox با عناوین نام و نام خانوادگی، وقتی کاربر این textBox ها رو پر کرد و روی دکمه ارسال کلیک کرد، اطلاعات به صفحه ی دوم میره و پیغام خوش آمدید چاپ میشه(همون Hello World خودمون!)
تو صفحه اول و در رویداد کلیک button، پس از چک کردن اینکه مقادیر وارد شدن:

Response.Redirect("Page2.aspx?n=" + TextBoxName.Text + "&f=" + TextBoxFamil.Text);


و در صفحه ی مقصد در رویداد Page_Load :

if (Request.QueryString["n"] != null)
Response.Write("Name : " + Request.QueryString["n"] + "---- Famil : " + Request.QueryString["f"]);


واسه فرستادن Query String، بعد از آدرس صفحه علامت "?" قرار میدیم و اسم متغیر رو مینویسم و "=" و بعد از اون مقدار.

page2.aspx?field=value

واسه ارسال چند Query String هم باید از علامت "&" استفاده کرد

page2.aspx?field1=value1&field2=value2


واسه دریافت Query String هم باید از دستور Request.QueryString استفاده کنی، که توی کروشه باید اسم QueryString رو وارد کنی.

dehqhani
پنج شنبه 12 تیر 1393, 11:06 صبح
توضیح خوبی بود دوست عزیز خب حالا که یه مثال ساده گفته شد بریم سراغ مساول کاربردی تر

خب حالا فرض کنید یه گرید ویو داریم با مقادیر زیر حالا میخوایم کاربر با کلیک بر روی یکی از رکورد ها id اون رکورد به صفحه مورد نظر فرستاده بشه و توسط صفحه مقصد دریافت بشه .


id
name
family
tell

nice_boy_a
پنج شنبه 12 تیر 1393, 12:35 عصر
گرفتی ما رو؟ خو همون اول برو سر اصل مطلب.
کدهای گرید ویو رو بزار بینم چه جوری Bind کردی ؟
دقیقا با کلیک بر روی کدوم آیتم ؟؟؟ آیتمت باید مشخص باشه.

مرتضی تقدمی
پنج شنبه 12 تیر 1393, 12:40 عصر
....

سلام
برای جلوگیری از XSS هم حتما پارامترها رو توسط متد زیر استفاده کنید:

server.htmlencode();
موفق باشید

dehqhani
پنج شنبه 12 تیر 1393, 14:48 عصر
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:db_pcmsfin %>"


SelectCommand="SELECT [id], [IssueDate], [functorID], [functor], [Type1], [Type2 , [Description] FROM [tb_ReportDailyPersonel] WHERE (1=1 /*!-..-!*/ ) ORDER BY [id] DESC">

</asp:SqlDataSource>
<% if (is_first)
{ %>
<div align="center" class="grid_info_header" dir="rtl">
<table dir="rtl" width="100%" align="center">
<tr>
<td dir="ltr" align="center" width="30%">
<table width="100%" class="redios_info" align="center">
<tr>
<td align="center">
<div align="center">
<asp:ImageButton ID="btn_first_page" runat="server" ImageUrl="~/Image/sign/tbl_ico_first_off.gif"
OnClick="btn_first_page_Click" />
<asp:ImageButton ID="btn_pre_page" runat="server" ImageUrl="~/Image/sign/tbl_ico_prev_off.gif"
OnClick="btn_pre_page_Click" />
&nbsp;&nbsp;
<asp:DropDownList ID="Drop_pages" runat="server" Width="80px" AutoPostBack="True"
OnSelectedIndexChanged="Drop_pages_SelectedIndexChanged" CssClass="Ttext">
</asp:DropDownList>
&nbsp;&nbsp;
<asp:ImageButton ID="btn_next_page" runat="server" ImageUrl="~/Image/sign/tbl_ico_next_on.gif"
OnClick="btn_next_page_Click" />
<asp:ImageButton ID="btn_last_page" runat="server" ImageUrl="~/Image/sign/tbl_ico_last_on.gif"
OnClick="btn_last_page_Click" /></div>
</td>
</tr>
</table>
</td>
<td align="center" width="30%">
<table width="100%" class="redios_info">
<tr>
<td>
<div>
<asp:Label ID="lb_info" runat="server" Font-Names="Tahoma" Font-Size="14px"></asp:Label></div>
</td>
</tr>
</table>
</td>
<td align="center" width="30%">
<table width="100%" class="redios_info">
<tr>
<td>
<asp:ImageButton ID="btn_Export_Excel" runat="server" ImageUrl="~/Image/Excel.png"
OnClick="btn_Export_Excel_Click" />
&nbsp;&nbsp;
<asp:ImageButton ID="btn_Export_Word" runat="server" ImageUrl="~/Image/Word.png"
OnClick="btn_Export_Word_Click" />
&nbsp;&nbsp;
<asp:ImageButton ID="btn_Export_PDF" runat="server" ImageUrl="~/Image/PDF.png" OnClick="btn_Export_PDF_Click" />
&nbsp;&nbsp;
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="grid_content" align="center">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
DataSourceID="SqlDataSource1" CssClass="grid_style" AllowSorting="True" OnRowCreated="GridView1_RowCreated"
AllowPaging="True" OnSorted="GridView1_Sorted"
OnRowDataBound="GridView1_RowDataBound" PageSize="20">
<PagerSettings Visible="False" />
<RowStyle CssClass="grid_row_style" />
<Columns>

<asp:BoundField DataField="IssueDate" HeaderText="تاریخ ثبت"
SortExpression="IssueDate">
</asp:BoundField>


<asp:BoundField DataField="functor" HeaderText="انجام دهنده"
SortExpression="functor" />


<asp:BoundField DataField="Type1" HeaderText="نوع گزارش 1"
SortExpression="Type1" />
<asp:BoundField DataField="Type2" HeaderText="نوع گزارش 2"
SortExpression="Type2" />

<asp:BoundField DataField="Description" HeaderText="گزارش"
SortExpression="Description" />

<asp:TemplateField HeaderText="نمایش">

<ItemTemplate>

<asp:HiddenField ID="HiddenFINNOView" runat="server" Value='<%# Eval("id") %>' />
<asp:ImageButton class="myimg" id="openwin" runat="server" ImageUrl="~/Image/View_icon.png" OnClick="btn_view_Click" />

</ItemTemplate>
<ItemStyle Width="80px" />

</asp:TemplateField>
<asp:TemplateField HeaderText=".....">

<ItemTemplate>

<asp:HiddenField ID="HiddenUser" runat="server" Value='<%# Eval("id") %>' />
<asp:HiddenField ID="HiddenFINNO" runat="server" Value='<%# Eval("id") %>' />
<asp:ImageButton class="myimg1" id="openwins" runat="server" ImageUrl="~/Image/plus.png" OnClick="btn_score_Click" />

</ItemTemplate>
</asp:TemplateField>

</Columns>
<HeaderStyle CssClass="grid_header" />
</asp:GridView>
</div>
<% } %>

nice_boy_a
پنج شنبه 12 تیر 1393, 15:02 عصر
کنترل HiddenFINNOView مقدار id رو داره! مقدارش با

GridView1.FindControl("HiddenFINNOView").value;

بدست میاد.

dehqhani
پنج شنبه 12 تیر 1393, 15:56 عصر
خب در صفحات دیگه چطور میتونیم این مقدار رو داشته باشیم

nice_boy_a
پنج شنبه 12 تیر 1393, 17:16 عصر
وقتی که مقدار رو گرفتی راحت می تونی بفرستیش به صفحه ی مورد نظر، و تو صفحه ی مورد نظر(مقصد) هم تو پست شماره ی 2 گفتم.