PDA

View Full Version : سوال: فراخوانی متود کلاس c# در جاوااسکریپت



Arsham**
چهارشنبه 22 دی 1389, 15:08 عصر
سلام :لبخندساده:
من از vs 2005 استفاده میکنم.
چطوری میتونم متودی از یک کلاس C# رو در جاوااسکریپت فراخوانی کنم؟:متفکر:

majnun
چهارشنبه 22 دی 1389, 15:36 عصر
میتونید به وسیله جاوااسکریپت و وب سرویس ها اینکار را انجام بدین

در تاپیک های ایجاد شده توسط من بگرد یک مثال کامل هست بدردت میخوره ....

majnun
چهارشنبه 22 دی 1389, 15:38 عصر
این هم لینکش :

http://barnamenevis.org/showthread.php?255429-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7%D8%8C%D8%A8%D9%87-%D9%88%D8%B3%DB%8C%D9%84%D9%87-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%D B%8C%D9%BE%D8%AA-%D9%88-%D8%AB%D8%A8%D8%AA-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D8%AF%D8%B1-%D8%A8%D8%A7%D9%86%DA%A9-%D9%88-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D8%A2%D9%86%D9%87%D8%A7-%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C-%D8%AC%D9%86%D8%AF-%D9%84%D8%A7%DB%8C%D9%87&highlight=

Javad_Darvish_Amiry
چهارشنبه 22 دی 1389, 21:17 عصر
در ضمن تشکرو احترام برای majnun عزیز، اضافه میکنم:
استفاده از وب سرویس ها تو ASP.NET اصلا بهینه نیست و برای کارای سبک توصیه نمیشه. هر چند من شخصا برای کارای سنگین هم معمولا این کارو نمیکنم. در ضمن صدا زدن وب سرویس ها با get و post تنظیمات خاص وب کانفیگ رو هم میخواد که خود میکروسافت توصیه نمیکنه. پیشنهاد من اینه:
یه صفحه بساز. به جز دایرکتیو صفحه، بقیه کد ها همه رو پاک کن. حالا تو کد بیهایند کار کن. مثلا اگه تعداد و حجم داده هایی که میخوای به صفحه انتقال بدی کمه، از get و اگه زیاده از post برای گرفتن دیتا از کلاینت (و از طریق جاوااسکریپت) استفاده کن. اسم متدی هم که میخوای اجرا بشه رو به عنوان مثلا یکی از فیلد های QueryString ت قرار بده. تو PageLoad اون فیلد رو بازیابی کن و تو یه ساختار شرطی یا سوئیچ متد مورد نظر رو انتخاب و اجرا کن.
در ضمن این روش برای مدیریت نشست ها و کنترل امنیت هم بهتر جواب میده، یعنی دقیقا به حالت صفحات عادی کار میکنه. ولی معماری وب-سرویس ارائه شده تو ASP.NET تو کنترل نشست و امنیت خیلی ضعف داره.
بازم از دوست خوبم majnun تشکر میکنم.
پاینده باشید.

majnun
چهارشنبه 22 دی 1389, 22:11 عصر
سلام دوست عزیز ، ممنون میشم یک مثال بزاری از این چیزی که گفتی ، جالب شده واسم ببینم چجوریه

Javad_Darvish_Amiry
پنج شنبه 23 دی 1389, 01:38 صبح
سلام از ما بر تو دوست خوبم.
عزیزم، چون احساس کردم (البته فقط احساس کردم، شاید اشتباه بوده باشه :چشمک: ) این مطلب ممکنه به درد بعضی دیگه از دوستان بخوره، و ذکرش اینجا گم میشه، یه تاپیک جدید ایجاد کردم و سعی کردم مسئله رو در حد توانم باز کنم. امیدوارم از پسش براومده باشم. اگه نظری و انتقادی و پیشنهادی داری حتما با کمال میل میشنوم. این جا رو بی زحمت برای مطلب وب-فرم ها به جای وب-سرویس ها ببین. (http://barnamenevis.org/showthread.php?269855-%D9%88%D8%A8-%D9%81%D8%B1%D9%85-%D9%87%D8%A7-%D8%A8%D9%87-%D8%AC%D8%A7%DB%8C-%D9%88%D8%A8-%D8%B3%D8%B1%D9%88%DB%8C%D8%B3-%D9%87%D8%A7&p=1193390)

Arsham**
دوشنبه 27 دی 1389, 15:04 عصر
lز پاسخهاتون ممنون:قلب:
من از فراخوانی وب متود ها استفاده کردم اما همش error on page میده
یه نگاهی بهش بندازین

protected void Page_Load(object sender, EventArgs e)
{

TxtNewPostTitle.Attributes.Add("onblur", "javascript:CheckPostTitle()");
}
}و توی همون صفحه یعنی صفحه ی Content:

[WebMethod]
public static bool CheckPostTitle(string a, string b)
{
UsersCommonProc u = new UsersCommonProc();
if (u.CheckPostTitlePost(a, b))
{
return true;
}
else
{
return false;
}کد جاوا اسکریپت هم به این صورت نوشتم:

function CheckPostTitle()
{
var Txt1,Txt2;
Txt1=document.getElementById("<%=TxtNewPostTitle.ClientID%>").value;
Txt2=document.getElementById("<%=DdlNewPostGroup.ClientID%>").value;
var res;
res=PageMethods.CheckPostTitle(Txt2,Txt1,OnSucceed ,OnFailed);
if (res==true)
{
alert('کارشناس محترم، عنوان پست تکراری می باشد. لطفا آنرا تغییر دهید');
}
}EnablePageMethods="true" رو هم در Scriptmanager قرار دادم.
اگر در جاوااسکریپت هم به این صورت بنویسم undefined رو چاپ میکنه.

alert(PageMethods.CheckPostTitle(Txt2,Txt1));
شما چه راهی پیشنهاد میدید؟