PDA

View Full Version : سوال: فراخونی تابع سی شارپ از طریق جاوا اسکریپت



mahdidabaghi
چهارشنبه 17 آبان 1391, 22:38 عصر
سلام خدمت اساتید
میشه راهنمایی کنین چجوری میشه از طریق جاوا اسکریپت یک تابع رو که که توی code behind نوشتم رو فراخونی کرد.
برعکس این مورد رو(یعنی با دستورات سی شارپ یک تابع اسکریپتی رو فراخونی کنم) پیدا کردم ولی اینجوری شو نه!!!!!!!!!!!!!!!!
ممنون از شما

hamed_hossani
پنج شنبه 18 آبان 1391, 12:40 عصر
سلام
کد های سی شارپ در سمت سرور است
برای استفاده با جاوا اسکریپت باید درخواست به سرور بفرستید و تایع را صدا بزنید!

mahdidabaghi
جمعه 19 آبان 1391, 19:27 عصر
سلام مجدد
ایا واسه این کار واقعا روشی نیس؟
والبته یه سوال دیگه هم دارم و اون اینه که ایا میشه از طریق جاوا اسکریپت خاصیت text یه lable رو مقدار دهی کرد؟
ممنون میشه به این سوالات پاسخ بدین

mahdidabaghi
جمعه 19 آبان 1391, 19:49 عصر
من خودم واسه سوال دوم اینو پیدا کردم ولی جواب نداد:عصبانی++:

document.getElementById("Label1").innerText = "salam1"

ali9698
جمعه 19 آبان 1391, 19:49 عصر
جواب سوال اول رو نمیدونم
اما سوال دوم
تا اونجایی که من تست کردم و میدونم در مورد label نمیشه چون وقتی تبدیل به کنترل های html میشه پارامتری مثل value نداره که بتونی از طریق جاوا بهش مقدار بدی
اما در مورد کنترل های دیگه مثل تکست باکس این کار رو میشه کرد

ali9698
جمعه 19 آبان 1391, 19:53 عصر
اهان همون که پیدا کردی درسته فقط به جای innerText از innerHTML استفاده کن جواب میده

mahdidabaghi
جمعه 19 آبان 1391, 20:01 عصر
ممنون ازت علی جون ....
فقط میمونه جواب این سوال اولیه ...

mahdidabaghi
جمعه 19 آبان 1391, 22:29 عصر
اهان همون که پیدا کردی درسته فقط به جای innerText از innerHTML استفاده کن جواب میده
در ضمن برای راهنمایی بیشتر گاهی اون ای دی lable ممکنه فرق کنه (یعن وقتی دارین از صفحه view source میگیرین میبینین که ای دی چیزی دیگه ای شده و باید این ای دی رو تو کد قرار بدین.همین مشکل الکی بدجور حالمو گرفته بود ولی ...)
فقط میمونه سوال اول که منتظر پاسخ اساتید میم.نم هنوز

ali9698
جمعه 19 آبان 1391, 22:53 عصر
خواهش میکنم. آره معمولا وقتی که از مسترپیج استفاده میشه اول آی دی همه کنترل ها اسم اون content place holder قرار میگیره
مثلا ContentPlaceHolder1_Label1

mahdidabaghi
شنبه 20 آبان 1391, 00:13 صبح
تو سایت های خارجی یه سرچزدم و این نمونه رو پیدا کردم که خیلی قشنگ به صورت ایجکسی کار میکنه ولی مشکل اینه که من میخوام تسکت باکس زمان فراخوانی تابع مقدار بگیره نه همون اول بسم الله!
نمونه رو یه نگاه بندازین متوجه عرایض بنده میشین
فقط خواهشی دارم اینه که یه استاد جواب این پست رو بده

mahdidabaghi
شنبه 20 آبان 1391, 11:03 صبح
اساتید کمک کنید لطفا

fakhravari
شنبه 20 آبان 1391, 15:00 عصر
using System.Web.Services;
using System.Web.Script.Services;
[ScriptMethod, WebMethod]
public static string docall()
{
return Fakhravary.Date.PersianCalander.Date_Style4(DateTi me.Now);
}
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<script type="text/javascript">
function btnAccept_onclick() {
PageMethods.docall(onSuccess, onFailure);
}

function onSuccess(result) {
alert(result);
}


function onFailure(error) {
alert(error);
}
</script>
<input type="button" id="Button1" value="Accept" onclick="return btnAccept_onclick()" />

mahdidabaghi
شنبه 20 آبان 1391, 19:29 عصر
مهندس جان بابت کدت خیلی ممنون
فقط اگه میشه بگو چطور میتونم توی این قسمت
[ScriptMethod, WebMethod]
public static string docall()
{
return Fakhravary.Date.PersianCalander.Date_Style4(DateTi me.Now);
}


تسکت باکسهای وب فرممو مقدار دهی کنم(میخام اونا رو همین سمت مقدار دهی کنم) یعنی مثلا بتونم بنویسم:

[ScriptMethod, WebMethod]
public static string docall()
{
txt1.text= "helllloooooooooooooo";
txt2.text = "god by"

return Fakhravary.Date.PersianCalander.Date_Style4(DateTi me.Now);
}


بازم ممنون و شرمنده

fakhravari
شنبه 20 آبان 1391, 20:06 عصر
این متد string docall() خروجی استرینگ داره
return txt1.text +" "+txt2.text;

mahdidabaghi
شنبه 20 آبان 1391, 21:04 عصر
ممنون از شما مشکل اینجایه که توی متد اصلا txt1 , txt2 رو نمیشناسه.وگرنه به قول شما میشد خاصیت تکست اون ها رو در نهایت return کرد.
میشه بفرمایین چجوری این تسکت باکس ها رو به متد بشناسونم

fakhravari
شنبه 20 آبان 1391, 22:52 عصر
اره تست کردم در حالت استاتیک نمی تونانید ابجکتها را بخونید.
اطلاعات زیادی ندارم
http://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspx

mahdidabaghi
یک شنبه 21 آبان 1391, 00:11 صبح
اساتید دیگه نظری ندارن؟یعنی ایا اصلا نمیشه همچین کاری رو انجام داد؟

shahroozj
یک شنبه 21 آبان 1391, 16:13 عصر
شما نمی توانید با جاوااسکریپت یک متد سمت سرور را کال کنید ( مگر با AJAX )
من کد شما را به صورت زیر تغییر میدم



<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script language="javascript" type="text/javascript">
function TestCodeBehind() {
document.getElementById('<%= Label1.ClientID %>').innerText = '<%= CodeBehind() %>';
document.getElementById('<%= txt.ClientID %>').innerText = '<%= CodeBehind2() %>';
return false;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input id="Button1" type="button" value="Sample One" onclick="TestCodeBehind()" />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
<br />
<asp:TextBox ID="txt" runat="server"></asp:TextBox>
</div>
</form>
</body>
</html>


و

protected string CodeBehind()
{
return "this is a string from C#‎‎‎ code behind " + DateTime.Now.ToString();

}

protected string CodeBehind2()
{
return "heloooooooooo";

}

fakhravari
یک شنبه 21 آبان 1391, 20:38 عصر
دوست عزیز من اطلاعات زیادی ندارم اما میشود با [ScriptMethod, WebMethod] این کار را کرد.