PDA

View Full Version : سوال: چرا Response.Redirect بعد استفاده از باتن عمل نمي كنه ؟



احمد سامعی
دوشنبه 19 مرداد 1388, 16:50 عصر
سلام
من يك فرم ارسال اطلاعات دارم مي خوام بعد از اينكه اطلاعات به درستي ذخيره شد به يك صفحه جديد هدايت بشم و از كد زير استفاده كردم

Response.Redirect("new.aspx?Name=" + Request.QueryString[0])

اما عمل نمي كنه وقتي هم بريك مي زارم زمان اجرا هيچ پيغام خطايي نمي ده. آيا مربوط به اينكه روي لوكال هاست اجرا مي كنم يا نه ؟
چون اگر از اين متد تو Page_Load صفحه قبل از اينكه postback داشته باشم بدون استفاده از Query String به صورت زير، درست عمل مي كنه !


if (Request.QueryString["Name"] != null)
{....‌}
else { Response.Redirect("default.aspx"); }

مشكل از چي مي تونه باشه ؟

naeeme
سه شنبه 20 مرداد 1388, 14:12 عصر
آیا شما قبل از استفاده از Response.Redirect، valid بودن صفحه رو بررسی می کنید؟

احمد سامعی
سه شنبه 20 مرداد 1388, 16:07 عصر
ببخشيد اما منظوتون چيه ؟ من نفهميدم!

من براي اديت اطلاعات اين طوري ست كردم، منظورتون همين ؟ يا چيز ديگه ؟!


<%@ Page Language="C#" ValidateRequest="false"........

احمد سامعی
جمعه 23 مرداد 1388, 10:20 صبح
دوستان يكي جواب بده !!!!!!!

Neo Persian
شنبه 24 مرداد 1388, 18:07 عصر
كدت رو درست بزار اينجا ببينيم چه كردي

احمد سامعی
شنبه 24 مرداد 1388, 18:54 عصر
كدت رو درست بزار اينجا ببينيم چه كردي

ببخشيد اما مثل اينكه تو پست اول كدها رو گذاشتم...:قهقهه::متفکر:

ali.akhbary
شنبه 24 مرداد 1388, 19:29 عصر
ببخشيد اما مثل اينكه تو پست اول كدها رو گذاشتم...

درست یعنی اینکه پروژه رو زیپ کن و بذار

احمد سامعی
شنبه 24 مرداد 1388, 19:49 عصر
درست یعنی اینکه پروژه رو زیپ کن و بذار

ببين عزيز خيلي ساده احتياج به اين كار ها نيست (آپلود و ...)
يك صفحه داريم با يك كليد( asp:Button ) و يك رويداد كليك تو اين رويداد هم كد بالا نوشته شده (يا پايين...)

Response.Redirect("new.aspx?Name=" + Request.QueryString[0])
همين.!

اما ...

YourWorldToday
شنبه 24 مرداد 1388, 20:16 عصر
سلام
اول داخل کد برنامه یه برک پوینت بگذار ببین که کد اجرا میشه یا نه
دوم شاید شما از کنترل استفاده کرده باشید
دراین صورت Validation ها رو داخل GroupValidate قرار بده تا کد اجرا بشه
موفق باشید

احمد سامعی
شنبه 24 مرداد 1388, 20:49 عصر
سلام
اول داخل کد برنامه یه برک پوینت بگذار ببین که کد اجرا میشه یا نه
دوم شاید شما از کنترل استفاده کرده باشید
دراین صورت Validation ها رو داخل GroupValidate قرار بده تا کد اجرا بشه
موفق باشید

من از من فقط چند تا تكس باكس دارم والسلام هيچي ديگه ندارم. اين كليد رو هم برا كنسل گذاشتم براي بازگشت به صفحه قبل همين.
بريك پوينت هم گذاشتم از Try هم استفاده كردم مي گه خطاي ناشناخته :متفکر:

m.hamidreza
جمعه 13 شهریور 1388, 11:47 صبح
شما استفاده از QueryString رو به این شکل تغییر بدین، در صفحه اول و در رویداد باتن:

string Q_str = HelperClasses.Encode("IsOkay");
Response.Redirect("Product1.aspx?state=" + Q_str);

در صفحه دوم و در Page_Load :


lbl_error.Visible = false;
if (!Page.IsPostBack)
{
if (Request.QueryString["state"] != null)
{
string _Url = HelperClasses.Decode(Request.QueryString["state"]);
if (_Url == "IsOkay")
{
lbl_error.Text = "مشخصات محصول با موفقیت درج شد";
lbl_error.Visible = true;
lbl_error.ForeColor = System.Drawing.Color.Green;
}
if (_Url == "IsNotOkay")
{
lbl_error.Text = "خطا! مشخصات ثبت نشد دوباره سعی کنید";
lbl_error.Visible = true;
lbl_error.ForeColor = System.Drawing.Color.Red;
}
}
}


از یه کلاس هم برای Encode و Decode کوئری استرینگ میتونی استفاده کنی یا استفاده نکنی.
موفق باشید.

احمد سامعی
جمعه 13 شهریور 1388, 13:01 عصر
شما استفاده از QueryString رو به این شکل تغییر بدین، در صفحه اول و در رویداد باتن:

string Q_str = HelperClasses.Encode("IsOkay");
Response.Redirect("Product1.aspx?state=" + Q_str);

در صفحه دوم و در Page_Load :.....

منون اما مشكل سر ست كردن QueryString و صفحه دوم نيست
مشكل سر اين كه تو رويداد باتن زماني كه به خط Response مي رسه نمي تونه اون اجرا كنه و از رويداد خارج مي شه (تو Try, Catch هم چيزي نشون نميده)
حتي اگر يك url ساده بدم مثل default.aspx باز هم Redirect نمي شه و ماجراي قبلي :عصبانی++:

z_m3000
جمعه 13 شهریور 1388, 13:45 عصر
شاید خنده دار باشه ولی چون معمولا این اتفاق برای من پیش میاد عرض می کنم
چک کنید که این متد رو به کلیدتون متصل کردید یا نه
یعنی تو پنجره propertise تو قسمت متد ها اسم این تابع باید جلوی ایونت کلیک قرار گرفته باشه .
یا اینکه در قسمت کد HTML صفحه مقدار onserverclick (به متدیه تو همین مایه ها ) برابر نام تابع مورد نظر باشه
امیدوارم مشکلتون رو حل کنه

احمد سامعی
جمعه 13 شهریور 1388, 19:59 عصر
چک کنید که این متد رو به کلیدتون متصل کردید یا نه

ممنون از توجهت عزيز
اما شما دقت نكردي من تو پست هاي قبلي اشاره كردم وقتي اجرا به خط Response مي رسه متوقف مي شه يعني به كليد وصل :افسرده:

hashemi85sep
چهارشنبه 18 شهریور 1388, 12:34 عصر
سلام دوست عزیز
شما یه بار از دستور server.transfer استفاده کن ببین باز هم همین خطا رو میده؟؟؟

Neo Persian
جمعه 20 شهریور 1388, 00:35 صبح
Response.Redirect() توي try catch هستش؟ try catch هم نباشه باز همينه؟

FirstLine
جمعه 20 شهریور 1388, 04:39 صبح
با سلام
من در vs2003 & vb تقریبا همین مشکل را داشتم، وقتی که اون دکمه را حذف کردم، یکبار پروژه را اجرا کردم و دوباره یک دکمه جدید به پروژه اضافه و کدهاشو مجدد نوشتم، مشکل من اینجوری برطرف شد. (البته تاپیک مورد نظر با کلی پپست موجود است) امیدوارم مشکل شما حل شود.
با تشکر

Exception
جمعه 20 شهریور 1388, 10:39 صبح
ممنون از توجهت عزيز
اما شما دقت نكردي من تو پست هاي قبلي اشاره كردم وقتي اجرا به خط Response مي رسه متوقف مي شه يعني به كليد وصل :افسرده:
اگر اینجوری هست که طبیعیه. این دستور خودش thread جاری رو هم متوقف میکنه.
به عنوان پارامتر دوم false بفرست، درسته میشه.

Response.Redirect(url, false);

احمد سامعی
دوشنبه 23 شهریور 1388, 23:25 عصر
يك مسئله جالب:
من يك پروژه جديد داشتم كه با همون روش بالا كه تو پست اول گفتم يعني بدون استفاده از پارامتر دوم Redriect كردم و حتي كوئري استرينگ هم پاس كردم و هيچ مشكلي هم نيست راحت انجام مي شه و به صفحه مورد نظر مي ره اما تو يكي قبلي نه
هر دو وب اپليكشن هست فقط تو اولي از LoginControl هاي خود دات نت استفاده كردم تو دومي با Session ورود خروج چك مي كنم آيا به اين مسئله مي تونه مربوط بشه ؟

احمد سامعی
سه شنبه 24 شهریور 1388, 22:13 عصر
بالاخره فهميدم مشكل از چي !؟
از روي پروژه دوم كه بالا گفتم فهميدم، من تو پروژه اولي از آژاكس استفاده كردم و باتن تو يك آپديت پنل گذاشته بودم و وقتي از اون خارج كردم درست شد !
اما حالا دوستان كسي مي تونه بگه چطور در اين حالت از آپديت پروسسز استفاده كنم ، چون آپديت پروسسز فقط تو آپديت پنل كار مي كنه و باتن من هم كه پنل نيست واسه همين وقتي كه كليد مي شه ديگه آپديت پروسسز عمل نمي كنه