View Full Version : jquery به صورت inline در کد C# ?
rasool_brn
چهارشنبه 20 بهمن 1389, 10:53 صبح
سلام
میشه کدهای jquery رو به صورت inline تو کدهای C# نوشت ؟
می خوام وقتی یه Button تو صفحه کلیک میشه یه شرط بررسی شه ، اگر درست بود DIV1 نمایش داده بشه و اگر غلط بود DIV .
میشه راهنمایی کنید ؟
بسیار سپاسگذار
eshpilen
پنج شنبه 21 بهمن 1389, 10:15 صبح
تاجایی که دیدم هندلرهای Button ها سمت سرور اجرا میشن. یعنی صفحه سابمیت میشه. درحالیکه jquery سمت کلاینت اجرا میشه.
بنظرم باید در هندلر یک دستور jquery رو پرینت کنی که اون کار خاص رو انجام میده. وقتی این کد برسه سمت کلاینت اجرا میشه.
mehdi.mousavi
پنج شنبه 21 بهمن 1389, 10:29 صبح
سلام.
سلام میشه کدهای jquery رو به صورت inline تو کدهای C# نوشت؟
البته که میشه. برای ثبت JavaScript Code Block مورد نظرتون، میتونید بدین شکل عمل کنید:
ClientScript.RegisterClientScriptBlock(GetType(), "myKey", "alert('test');", true);
طبیعتا جای alert در کد فوق، میتونید کد jQuery مورد نظرتون رو بذارید.
می خوام وقتی یه Button تو صفحه کلیک میشه یه شرط بررسی شه ، اگر درست بود DIV1 نمایش داده بشه و اگر غلط بود DIV . میشه راهنمایی کنید ؟ بسیار سپاسگذار
چرا می خواهید اینکارو از سمت Server کنترل کنید؟ سمت Client، میتونید براحتی click handler ای برای اون Button تعریف کنید، سپس در اون button اگر شرط برقرار بود، true برگردونید (که باعث انجام عمل PostBack به سرور میشه)، اگر هم نبود، false برمیگردونید تا Click اخیر نادیده گرفته بشه...
موفق باشید.
rasool_brn
پنج شنبه 21 بهمن 1389, 11:07 صبح
البته که میشه. برای ثبت JavaScript Code Block مورد نظرتون، میتونید بدین شکل عمل کنید:
کد:
ClientScript.RegisterClientScriptBlock(GetType(), "myKey", "alert('test');", true);
طبیعتا جای alert در کد فوق، میتونید کد jQuery مورد نظرتون رو بذارید.
از این کد استفاده کردم ، ولی وقتی کد jquery توش مینویسم خطا میده ، چطوری از طریق جاوا Div رو نمایش بدم ، فکر کنم تابع getelemntbyname باشه ، آره ، میشه کمک کنید.
چرا می خواهید اینکارو از سمت Server کنترل کنید؟ سمت Client، میتونید براحتی click handler ای برای اون Button تعریف کنید، سپس در اون button اگر شرط برقرار بود، true برگردونید (که باعث انجام عمل PostBack به سرور میشه)، اگر هم نبود، false برمیگردونید تا Click اخیر نادیده گرفته بشه...
مشکل اینجاست که این شرط حتما باید سمت سرور بررسی بشه ، اگه دقیقتر بخوام بگم که چیکار میخوام بکنم ، باید بگم که من با DIV یک کنترل login تو ASP.NET درست کردم ، این کنترل رو من کنار سایت تو قسمت ناوبری گذاشتم (یعنی تو صفحه Master )، حالا میخوام کاربر "نام کاربری" و "رمز عبور" رو وارد کنه این شرط بررسی شه که آیا نام کاربری و رمزش درسته یا نه ، اگه درست بود این Div مخفی بشه و یک Div دیگه که توش نوشته خوش آمدید به جاش ظاهر شه.
یعنی باید کاری کنم که شرط به زبان C# بررسی شه اگه درست بود یه تابع jquery اجرا بشه که Div اول رو مخفی کنه و Div دوم رو نمایش بده و اگه هم غلط بود اتفاقی نیفته .
ممنون
mehdi.mousavi
پنج شنبه 21 بهمن 1389, 13:08 عصر
از این کد استفاده کردم ، ولی وقتی کد jquery توش مینویسم خطا میده ، چطوری از طریق جاوا Div رو نمایش بدم ، فکر کنم تابع getelemntbyname باشه ، آره ، میشه کمک کنید.
کد JavaScript ای که نوشته اید و با خطا مواجه شده چی بوده؟ شما میتونید بدین شکل عمل کنید:
ClientScript.RegisterClientScriptBlock(GetType(), "myKey", "$('div').hide();", true);
اما روشهای بهتری نیز وجود داره. شما میتونید تابعی برای اینکار سمت Client تعریف کنید و اون تابع رو با پارامترهای مورد نظرتون فراخوانی کنید:
(function ($) {
$.myFunction = function(param1) {
alert('my param is' + param1);
};
})(jQuery);
و سپس در کد، کافیه تا تابع فوق رو با پارامترهای مورد نظرتون فراخوانی کنید:
ClientScript.RegisterClientScriptBlock(GetType(), "myKey", "$.myFunction('whatever');", true);
مشکل اینجاست که این شرط حتما باید سمت سرور بررسی بشه ، اگه دقیقتر بخوام بگم که چیکار میخوام بکنم ، باید بگم که من با DIV یک کنترل login تو ASP.NET درست کردم ، این کنترل رو من کنار سایت تو قسمت ناوبری گذاشتم (یعنی تو صفحه Master )، حالا میخوام کاربر "نام کاربری" و "رمز عبور" رو وارد کنه این شرط بررسی شه که آیا نام کاربری و رمزش درسته یا نه ، اگه درست بود این Div مخفی بشه و یک Div دیگه که توش نوشته خوش آمدید به جاش ظاهر شه. یعنی باید کاری کنم که شرط به زبان C# بررسی شه اگه درست بود یه تابع jquery اجرا بشه که Div اول رو مخفی کنه و Div دوم رو نمایش بده و اگه هم غلط بود اتفاقی نیفته . ممنون
احسنت. برای این کار، شما نباید به این روشها متوصل بشید. روش صحیح، فعال کردن ASP.NET AJAX Application Services در فایل Web.Config و استفاده از قابلیتهایی هستش که همراه ASP.NET وجود داره. خوندن این مقاله (http://weblogs.asp.net/asptest/archive/2008/12/09/working-with-the-asp-net-ajax-authentication-service.aspx) شما رو با این روش آشنا میکنه. بدین ترتیب دیگه نیازی به Full Postback نخواهید داشت...
موفق باشید.
rasool_brn
پنج شنبه 21 بهمن 1389, 18:07 عصر
ClientScript.RegisterClientScriptBlock(GetType(), "myKey", "$('div').hide();", true); من دقیقا از این کد استفاده نمیکنم ، من از ScriptManager استفاده میکنم که به خوبی کدهای جاوااسکریپت رو اجرا میکنه ولی اصلا کدهای jquery رو اجرا نمیکنه ، هرچند که خطا هم نمیده ، ولی کد jquery اجرا نمیشه.
این ClientScript کلاس خاصیه ، یا اینکه منظورتون همون ScriptManager هست؟
احسنت. برای این کار، شما نباید به این روشها متوصل بشید. روش صحیح، فعال کردن ASP.NET AJAX Application Services در فایل Web.Config و استفاده از قابلیتهایی هستش که همراه ASP.NET وجود داره. خوندن این مقاله (http://weblogs.asp.net/asptest/archive/2008/12/09/working-with-the-asp-net-ajax-authentication-service.aspx) شما رو با این روش آشنا میکنه. بدین ترتیب دیگه نیازی به Full Postback نخواهید داشت...
من با Ajax آشنایی کامل دارم ، اصلا کل سایتم رو بر اساس Ajax نوشتم ، الان مشکل من این نیست که کل صفحه Postback میشه یا بخشی از اون ، مشکل من اینه که باید کدهای jquery یا جاوااسکریپت رو با کد C# طوری ترکیب کنم که به خوبی کار کنه و جواب بده ، چه صفحه کامل Postback بشه و چه بخشی از اون. اگر اشتباه نکرده باشم تو این مقاله ای که گذاشتید از روشی مشابه استفاده شده ، با این تفاوت که من میخوام یک DIV رو با کنترلهای داخلش یکجا پنهان کنم ولی تو این مقاله کنترلها رو پنهان کرده و کاری به Table دربرگیرنده اونا نداشته.
rasool_brn
جمعه 22 بهمن 1389, 10:48 صبح
پیدا کردم T ، کد رو میذارم که بقیه دوستانم ببینن :
ScriptManager requestSM = ScriptManager.GetCurrent(this);
if (requestSM != null && requestSM.IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(this,
typeof(Page),
Guid.NewGuid().ToString(),
"$(document).ready(function() { $('#DIV1').hide(); })",
true);
}
else
{
ClientScript.RegisterClientScriptBlock(typeof(Page ),
Guid.NewGuid().ToString(),
"$(document).ready(function() { $('#DIV1').hide(); })",
true);
}
باید یه شرط بررسی میشد ، فقط من نفهمیدم که این شرط چی رو بررسی میکنه.
اینم لینک :
http://blog.dreamlabsolutions.com/post/2009/06/03/run-jQuery-code-from-ASPNET-Server-Side.aspx
اینجا خیلی قشنگتر همه چی رو تتو تابع نوشته.
elham366
شنبه 08 مرداد 1390, 19:31 عصر
پیدا کردم T ، کد رو میذارم که بقیه دوستانم ببینن :
ScriptManager requestSM = ScriptManager.GetCurrent(this);
if (requestSM != null && requestSM.IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(this,
typeof(Page),
Guid.NewGuid().ToString(),
"$(document).ready(function() { $('#DIV1').hide(); })",
true);
}
else
{
ClientScript.RegisterClientScriptBlock(typeof(Page ),
Guid.NewGuid().ToString(),
"$(document).ready(function() { $('#DIV1').hide(); })",
true);
}
باید یه شرط بررسی میشد ، فقط من نفهمیدم که این شرط چی رو بررسی میکنه.
اینم لینک :
http://blog.dreamlabsolutions.com/post/2009/06/03/run-jQuery-code-from-ASPNET-Server-Side.aspx
اینجا خیلی قشنگتر همه چی رو تتو تابع نوشته.
سلام نمیشه از$document.ready استفاده نکرد؟ یه فانکشن دیگه رو فقط صدا کرد...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.