View Full Version : سوال: فراخوانی مستقیم متد در فایل aspx
A.S.Roma
یک شنبه 19 مهر 1388, 16:49 عصر
با سلام
من می خواهم به طور مستقیم مقدار Text یک Lable را با استفاده از فراخوانی یک متد تنظیم کنم . من از این Syntax استفده کردم :
<asp:Label ID="lblNumSelectedItem" runat="server" Text='<%#GetNumSelected()%>'></asp:Label>
فکر می کنم اسم این کد Reflective Code بود .
اما متاسفانه کار نمی کند .
ضمنا" متد هم با سطح دسترسی Public می باشد و دارای خروجی String است.
Chabok
سه شنبه 21 مهر 1388, 14:46 عصر
با سلام
چنین حالتی که شما میخواهید امکان پذیر نیست (یا حداقل من پیدا نکردم)
بلاک های کدی که در ASP.NET مجاز است اینهاست :
<%$ %>
<%# %>
<% %>
<%= %>
اولی یعنی <% $%> جهت استفاده از آیتم هایی مانند AppSettings و GlobalResources می باشد .
<asp:Label runat="server" Text="<%$ AppSettings:Key %>" />دومی یعنی <% #%> جهت Bind کردن مقادیر DataSource به کنترل استفاده میشه و هنگام صدا زدن متد DataBind کنترل این مقادیر جایگزین می شوند .
<%# Eval("Value") %>سومی که کد بلاک اصلی در ASP.NET محسوب میشه بدین صورت استفاده میشه :
<%
string message = "Hello World!";
Response.Write(message);
%>
و آخری یعنی <% =%> مانند Response.Write عمل می کند و عبارت داخل بلاک را چاپ می کند .
<%= String.Format("The title of this page is: {0}", this.Title ?? "n/a") %>
این آخری بیشتر به عملی که شما میخواهید انجام بدین شباهت داره . ولی مشکل اینجاس که در کنترل های Runat=Server نمیشه از چنین کد بلاکی استفاده کرد .
شما چند راه دارید :
1.کنترل Label نداشته باشید و مستقیماً عبارت را چاپ کنید .
2.در رویداد مناسبی مانند Page_Load متن مورد نظر خود را به Label نسبت دهید .
3....
موفق باشید .
Behrouz_Rad
سه شنبه 21 مهر 1388, 16:54 عصر
با سلام
من می خواهم به طور مستقیم مقدار Text یک Lable را با استفاده از فراخوانی یک متد تنظیم کنم . من از این Syntax استفده کردم :
<asp:Label ID="lblNumSelectedItem" runat="server" Text='<%#GetNumSelected()%>'></asp:Label>
فکر می کنم اسم این کد Reflective Code بود .
اما متاسفانه کار نمی کند .
ضمنا" متد هم با سطح دسترسی Public می باشد و دارای خروجی String است.
درست انجام دادی. فقط یک نکته رو فراموش کردی. متد DataBind کلاس Page رو در Page_Load فراخوانی نکردی. کاراکتر # مخصوص عملیات Binding هست و چون برای کنترلی عملیات فراخوانی متد رو انجام میدی که Binding رو ذاتاً پشتیبانی نمی کنه، هیچ داده ای در Label قرار نمی گیره:
protected void Page_Load(object sender, EventArgs e)
{
Page.DataBind();
}
موفق باشید.
persianspam
سه شنبه 21 مهر 1388, 17:53 عصر
تابع باید خروجی داشته باشه
یعنی تابع GetNumSelected باید به صورت زیر باشد .
public string GetNumSelected()
{
string Test = "Hello User";
return Test;
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.