PDA

View Full Version : حرفه ای: استفاده و register کردن فایل جاوااسکریپتی در یک custom server control



amirjalili
یک شنبه 21 شهریور 1389, 15:38 عصر
با سلام خدمت دوستان محترم.
من میخوام یک Custom control خیلی ساده درست کنم که یک text رو نمایش بده و هنگام کلیک روی اون text یک تابع جاوااسکریپتی رو صدا بزنه که مثلا میتونه شامل یه کار ساده مثل دادن یک پیغام یا alert باشه .
برای این کار یک پروژه ASP.NET server control رو ایجاد کردم.
در فایل CS مربوط به این کنترل مثل زیر عمل کردم که در واقع 4-3 خط (جاهایی که در کد به صورت bold نشان داده شده)خودم نوشتم و بقیش خودش توسط visual studio ایجاد میشه.


public class ServerControl1 : WebControl
{

[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? "[" + this.ID + "]" : s);
}

set
{
ViewState["Text"] = value;
}
}



protected override void OnPreRender(EventArgs e)
{[B]
base.OnInit(e);
this.Page.ClientScript.RegisterClientScriptInclude (this.GetType(), "MyControl",
Page.ClientScript.GetWebResourceUrl(this.GetType() , "MyControl.testJS.js"));
}

protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<p onclick='event2()'>" + Text + "</p>");

}
}

در AssemblyInfo.cs هم همونطوری که در همه آموزش ها هست یک خط رو اضافه کردم.


[assembly: WebResource("MyControl.testJS.js", "text/javascript")]

فایل جاوااسکریپت هم در root و در کنار فایل CS قرار داره. مسیر ها رو درست دادم. اما وقتی کلیک میکنم میبینم که تابع event2 مربوط به جاوااسکریپت رو اصلا نمیشناسه که ناشی از نشناختن فایل جاوااسکریپتی هست که تابع در اون قرار داره.
ایراد کار من کجاست؟
فایل های پروژه رو هم همراه با تستش اینجا قرار میدم.

Behrouz_Rad
یک شنبه 21 شهریور 1389, 15:59 عصر
فایل testJS.js رو در Solution Explorer رو انتخاب کن و خصیصه ی Build Action اون رو برابر با Embedded Resource قرار بده.

موفق باشید.