PDA

View Full Version : مشکل هنگام رفتن به صفحه ی بعد



AspNet
دوشنبه 29 فروردین 1384, 16:52 عصر
با سلام

من با این کد از صفحه ی اول به صفحه ی دوم میروم:

Server.Transfer("StudentPage.aspx?StudentID=" + txtID.Text.ToString());

که من در صفحه ی اولم از کاربر رمز رو میخوام که بتونه به صفحه ی دوم بره.

حالا مشکل من اینجاست که وارد صفحه دوم که میشم تو قسمت آدرس مرورگرم به جای اینکه نام صفحه ی جاری یعنی همون صفحه دوم رو بنویسه هنوز نام صفحه ی اول هست. و صفحه ی سوم هم باز نام صفحه دوم رو داره..
به نظر شما مشکلش چیه؟

با تشکر:AspNet

titbasoft
دوشنبه 29 فروردین 1384, 18:42 عصر
خاصیت وجودی server.transfer اصلا همینه شما بهتره از response.redirect استفاده کنید:
یک مقایسه ساده بین response.redirect و server.transfer در یک مقاله : http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=15

AspNet
سه شنبه 30 فروردین 1384, 19:18 عصر
ممنون از مقاله تان..
حالا یه سوال دیگه:

برنامه ای ساختم شامل 4 صفحه است از همون صفحه ی اول فرم لوگین داره . ولی من به راحتی میتونم بین صفحات حرکت کنم . منظورم اینه که وقتی لوگین کردم و وارد صفحه ی مشخصات شدم وقتی back میزنم هنوز توی صفحه ی اول پسوردم مونده و خیلی راحت میتونم back و forward کنم
به نظر شما مشکل من کجاست؟آیا باید فایل web.config رو دستکاری کنم؟

البته باید عرض کنم که من در web.config در تشخیص هویت کاربران از windows mode استفاده میکنم

titbasoft
سه شنبه 30 فروردین 1384, 20:19 عصر
خوب این یک مساله طبیعیه. وقتی کاربر شما authenticate می شود تا زمانی که session او expire نشده در کلیه صفحاتی که نیاز به authentication دارند یک کاربر valid شناخته می شود. ضمن اینکه با استفاده از کلید های back و forward شما روی history (صفحات cash شده در شمت client) حرکت می کنید و همونطور که می دونید الزاما این صفحات update شده نیستند. گاهی اوقات شما با کلید forward از صفحه login به صفحه بعد حرکت می کنید ولی اگر صفحه تون رو refresh کنید دوباره به صفحه redirect ، login خواهید شد.

AspNet
چهارشنبه 31 فروردین 1384, 12:24 عصر
من صریحا از session استفاده نکردم و کار باهاش هم بلد نیستم . آیا این session به طور اتوماتیک ساخته میشه؟

AspNet
چهارشنبه 31 فروردین 1384, 12:25 عصر
حالا من برای اینکه بتونم با back به صفحه ی login منتقل بشم باید چکار کنم؟؟

titbasoft
چهارشنبه 31 فروردین 1384, 13:23 عصر
من صریحا از session استفاده نکردم و کار باهاش هم بلد نیستم . آیا این session به طور اتوماتیک ساخته میشه؟
به محض اینکه یکی از صفخات شما رو request کنه این مراحل رو IIS انجام میده و بعد اون صفحه رو در اختیار کاربر قرار میده:
اگر شما اولین کاربری هستید که در یک سایت online می شوید یک نمونه از شیئ Application ساخته می شه و در همین زمانه که ایونت Application_onstart شما که از طریق global.asax به اون دسترسی دارید fire می شه.
سپس برای هر کاربر به طور جداگانه یک session ساخته میشه که اطلاعات اون به صورت cokie های سمت سرور ذخیره می شوند.
به طور کلی session در سیستم های تحت وب نقش اساسی ایفا می کنه و فقط در حد یک پیشنهاد باید عرض کنم که حتما در این زمینه مطالعه کنید. یک مقاله خوب: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconSessionState.asp


حالا من برای اینکه بتونم با back به صفحه ی login منتقل بشم باید چکار کنم؟؟
منظورتون از این کار چیه :گیج:

AspNet
چهارشنبه 31 فروردین 1384, 16:33 عصر
منظورم اینه که تو صفحه ی اول که کاربر لوگین کرد و وارد صفحه ی بعدی شد و از اونجا به صفحه ی سوم رفت اگه وقتی داخل صفحه ی سوم هست دکمه back رو بزنه نره به صفحه ی دوم یعنی برگرده به فرم لوگین

AspNet
چهارشنبه 31 فروردین 1384, 17:41 عصر
لطفا اگر میشه این مشکلم هم جدا پاسخ دهید:

من صفحه ای دارم به نام TestPage که از طریق دکمه ای که در آن هست به صفحه ی بعدی به نام ResultPage منتقل می شوم . و قابل ذکر است که از این کد استفاده می کنم:

Server.Transfer("ResultPage.aspx");
ولی از اونجایی که server.transfer باعث میشه که صفحه در قسمت آدرس نام اصلی خودش رو نگیره ، به جای اون از کد زیر استفاده کردم:

response.Redirect("ResultPage.aspx")

و در قسمت page load صفحه ی ResultPage هم از این کد استفاده کردم:

TestPage testPage=(TestPage)Context.Handler;

حالا میخواستم بگم که اگه از دستور response در صفحه ی قبلی استفاده میکردم ازم error میگرفت اما با دستور server.transfer ازم error نمیگرفت..

اررورش هم invalid cast بود .

حالا خواستم بدونم که این error به چه دلیل هست و آیا راهی وجود داره که حلش کنیم..

ببخشید این همه وراجی کردم :oops: