ورود

View Full Version : مشکل در استفاده از url Routing



morteza_mokhtari
دوشنبه 12 فروردین 1392, 14:32 عصر
سلام دوستان بنده تویه سایتم از url Routing استفاده کردم میخوام www.example.ir?city=tehran تبدیل بشه به www.example.ir/tehran که خطا میگیره اگه از این www.example.ir/city/tehran استفاده کنم جواب میده میخوام ببینم راهی هست که تبدیل به www.example.ir/tehran بشه.

و یه سوال دیگه ببنید بنده یه صفحه طراحی کردم که تویه اون صفحه لیست شهر ها رو نمایش میدم میخوام وقتی که کاربر رویه یکی از شهر ها کلیک کرد یه کوئری استرینگ به url اضافه بشه و تویه تمامی صفحات کوئری استرینگ باقی بمونه.مثلا فرض کنیم که url صفحه باشه www.example.ir که وقتی کاربر رویه یکی از شهر ها کلیک میکنه میخوام url صفحه تا وقتی که کاربر رویه یه شهر دیگه ای کلیک نکرده همیشه به این صورت باشه www.example.ir/city/tehran .نمیدونم تونستم منظورم رو برسونم یا نه.

ببنید من الان وقتی کاربر رویه یکی از شهرها کلیک میکنه اسم اون شهر رو درون یک کوکی قرار میدم که تویه تمام صفحات بتونم توسط این کوکی اطلاعات مربوط به اون شهر رو از جداول واکشی بکنم حالا میخوام به جای اینکار از کوئری استرینگ استفاده کنم که وقتی کاربر رویه یکی از شهرها کلیک کرد به تمامی url ها یک کوئری استرینگ اضافه بشه که با استفاده از اون بتونم اطلاعات مربوط به اون شهر رو واکشی کنم.

amirsajjadi
دوشنبه 12 فروردین 1392, 15:23 عصر
در مورد سوال اول شما با url rewrite میتونید درخواست هایی رو که میاد رو بدون تغییر url مرورگر مدیریت کنید. توی Global.asax و از رویداد Application_BeginRequest و از تابع HttpContext.Current.UrlRewite میتونید درخواست ها رو مدیریت کنید.
در مورد سوال دوم اگه بخواین توی چند صفحه کوئری استرینگ رو پاس بدید به نظر من از همون کوکی یا سیشن استفاده کنید بهتره چون مدیریت کوئری استرینگ ها و پاسکاری اونا توی صفحات مختلف (در پروژه هایی که صفحات زیادی داره) یکم مشکل ساز میشه. به هر حال اگه خیلی دوست دارید که از کوئری استرینگ استفاده کنید بهترین راه که خودم بعضی مواقع از اون برای بیشتر شدن امنیت و محافظت در برابر دستکاری شدن کوئری استرینگ ها استفاده میکنم پکیج کردن چند کوئری استرینک داخل یک کوئری هست به این صورت که تابعی برای انکریپت کردن بنویسید و بعد کوئری استرینگ ها رو به صورت یک رشته و با یک کاراکتر جدا کننده به هم جویین کرده و سپس انکریپتش کنید و بعد اون رشته انکریپت شده رو توی صفحات پاسکاری کنید و برای خواندن هم بالعکس عمل کنید.

morteza_mokhtari
دوشنبه 12 فروردین 1392, 22:37 عصر
پاس دادن کوئری استرینگ به این روش به نظرم اشتباه و با دردسر سازه.بنده بیشتر منظورم اینه که www.example.ir رو تبدیل کنم www.example.ir/cityname .یعنی یه جوری آدرس بازنویسی بشه.انگاری که دامنه سایت آدرس دومه. در مورد سوال اول هم ینده از این کد تویه global استفاده میکنم



routes.MapPageRoute("Home", "City/{City}", "~/Home.aspx");



که جواب میده و کار میکنه میخوام به جای کد بالا از این کد زیر استفاده کنم که خطا میگیره فکر کنم باید هر آدرس برای شناسایی یک identifier داشته باشه.به همین دلیله که خطا میگیره میخوام ببینم راهی هست که از routing زیر استفاده کنم.



routes.MapPageRoute("Home", "{City}", "~/Home.aspx");

amirsajjadi
سه شنبه 13 فروردین 1392, 09:31 صبح
من الان نمیتونم تست کنم چون ویژوال استودیو روی سیستمی که دارم پست میزارم نصب نیست. اینو یه امتحان بکن ببین جواب میده



routes.MapPageRoute("Home", "/{City}", "~/Home.aspx");

morteza_mokhtari
سه شنبه 13 فروردین 1392, 22:28 عصر
کد فکر کنم جواب نمیده آدرس تگ a که لینک میشه به صفحه Home رو باید چی قرار بدم.

behzad.tiktak
چهارشنبه 21 آذر 1397, 15:06 عصر
من الان نمیتونم تست کنم چون ویژوال استودیو روی سیستمی که دارم پست میزارم نصب نیست. اینو یه امتحان بکن ببین جواب میده



routes.MapPageRoute("Home", "/{City}", "~/Home.aspx");


با سلام شما میدونید چطوری میشه با دستور routes.ignore عکس ها یا لینک های دیگری موجود در صفحه Route نشن؟ نمیخوام از دستور ignoreRoute استفاده کنم چون برای mvcهست من برای asp.net میخوام بدون mvc