PDA

View Full Version : آموزش url routing در دات نت 4



hamid_shrk
دوشنبه 21 آذر 1390, 13:43 عصر
سلام، دیدم که دوستان زیاد در مورد url routing سوال میکنن گفتم بهتره آموزشش رو بزارم ، البته چون خودم وقت درست کردن مقالش رو ندارم از یک سایت دیگه کمک گرفتم چون اونجا هم کاملا درست توضیح داده.
ولی اگه پیرامون این مبحث سوالی بود خودم در خدممتون هستم .
..
ASP.NET 4.0 اين امكان را فراهم آورده است تا بتوان همانند كنترلرهاي ASP.NET MVC به نگاشت URL ها در ASP.NET Web Forms پرداخت.
مثال زير نشان مي دهد كه چگونه مي توان با استفاده از تايع جديد ()MapPageRoute در ASP.NET 4.0 آدرس products/software را به صفحه Products.aspx كه در دايركتوري اصلي قرار دارد منتقل كرد.

79074

اولين پارامتر از متد ()MapRout نام خلاصه شده مسير مي باشد. پارامتر دوم فيلتر URL مي باشد و پارامتر سوم به صفحه اي اشاره مي كند كه قرار است URL را كنترل كند. در صفحه Products.aspx مي توان كدهايي همانند شكل زير نوشت كه با استفاده از خاصيت جديد Page.RouteData در ASP.NET 4.0 مقدار پارامتر category را كه توسط products/category نگاشته شده است را برگردانده و از آن استفاده كرد.

79075
علاوه بر دسترسي برنامه نويسي شده به پارامترهاي URL همانند شكل فوق، مي توان از <asp:routeparameter> در هر كنترل DataSource در ASP.NET براي دسترسي به پارامتر URL استفاده كرد. به عنوان مثال در زير عبارت <asp:routeparameter> براي برگرداندن مقدار پارامتر @category از products/{category} در مسير URL بكار رفته است.

79076

برگرداندن URL ها در ASP.NET Web Form
همانطور كه در ASP.NET به كمك مسيرگزيني URL، مسيرهاي دلخواه به عنوان مسير اصلي انتخاب مي شوند مي توان براحتي مسيرهاي واقعي را نيز برگرداند. بعنوان مثال در فوق وقتي URL مروط به products/{category} را نگاشتيم در واقع به آن يك نام كاربرپسند مثلا" به نام "products-browse" نسبت داديم. حال مي توان به راحتي با استفاده از متد ()Page.GetRouteUrl و با استفاده از پارامترهاي آن مسير واقعي URL را برگرداند. مثال زير نحوه استفاده از اين متد براي برگرداندن مسير اصلي URL كه با نام كاربر پسند مثلا" "products-browse" نگاشته شده است را نشان مي دهد.

79076


به تابع توضيح داده شده در فوق مي توان هم از طريق كد نويسي در code-behind و هم از طريق markup نويسي در صفحه aspx دست يافت.
همچين مي توان با استفاده از متد ()Response.RedirectToRoute بدون توجه به اينكه از MVC استفاده مي كنيم يا Web Form كاربران را به مسيرهاي مختلفي كه با استفاده از مسيرگزيني URL نگاشته شده اند، منتقل كرد.

سناريوهايي براي اداره كردن PostBack ها
مسيرگزيني URL در ASP.NET 4.0 به طور كامل سناريوهاي Postback را پشتيباني مي كند. بعنوان مثال اگر صفحه اي با آدرس products/software را باز كنيد همه كنترل هاي سمت سروري آن المان html بصورت <form action="/products/software"> را به client برميگردانند. كه اين يعني حفظ كردن URL ها در هر Postback ،چيزي قبلا" برنامه نويسان با استفاده از مادولهاي URL Rewriting براي فراهم ساختن آن نياز به كدنويسي اضافه داشتند.





------------------------
منبع :persiadevelopers




http://barnamenevis.org/images/misc/pencil.png

fakhravari
دوشنبه 21 آذر 1390, 14:28 عصر
با سلام
من یه سمپل درست کردم اما نمیدونم چرا ادرس عوض نمیشه اگر ممکن یه نگاهی بندازید .

hamid_shrk
دوشنبه 21 آذر 1390, 14:42 عصر
باید اینجوری مینوشتید :

Response.Redirect("Products/"+TextBox1.Text.Trim());

حالا تو لود صفحتون Id رو اینجوری بخونید :

Page.RouteData.Values["Id"].ToString()

fakhravari
دوشنبه 21 آذر 1390, 15:41 عصر
بله درست شد.
فقط این روش برای زمانی کاربرد داره که یه query string فرستاده میشود برای نمایش .
چون اگر دوباره از همان صفحه درخاصتی بیاید not page میزنه:متفکر:.
باید با try catch کنترل شود؟

hamid_shrk
دوشنبه 21 آذر 1390, 15:48 عصر
بله درست شد.
فقط این روش برای زمانی کاربرد داره که یه query string فرستاده میشود برای نمایش .
چون اگر دوباره از همان صفحه درخاصتی بیاید not page میزنه:متفکر:.
باید با try catch کنترل شود؟
تو Try catch که باید بزارید چون خیلی مشکلات بوجود میاد اگه نزارید.
اما دوباره هم میتونید اون صفحه رو با این دستور بخونید :

Response.Redirect("../Products/"+مقدار);

حتما باید یک url هم با نام خود پیج به این صورت :

routes.MapPageRoute(
"products", "products", "~/Products.aspx");

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

fakhravari
سه شنبه 22 آذر 1390, 01:37 صبح
با سلام
برای ورژن 3.5 چیکار کنیم:خجالت:

mo.esmp
سه شنبه 22 آذر 1390, 04:13 صبح
http://msdn.microsoft.com/en-us/magazine/dd347546.aspx برای 3.5

hamid_shrk
سه شنبه 22 آذر 1390, 08:58 صبح
http://msdn.microsoft.com/en-us/magazine/dd347546.aspx برای 3.5
ضمن تشکر ،
تو دات نت های پایین تر از Rewriting بیشتر استفاده میشه چون از Routing راحتتره،اما در دات نت 4 Routing خیلی راحت شده.

hamid_shrk
چهارشنبه 23 آذر 1390, 11:14 صبح
آقای فخر آوری تو سوالی که بصورت خصوصی پرسیده بودید فکر میکنم query string تون رو اینجوری نوشته بودید که خطا میداد.


Response.Redirect("Products.aspx?Id="+TextBox1.Text.Trim());



تو این حالت باید query تون رو به این صورت بنویسید :


Response.Redirect("Products/"+TextBox1.Text.Trim());




که عبارت بعد از" / " همون کوئری استرینگتون هست.دیگه از ؟ استفاده نکنید.

fakhravari
چهارشنبه 23 آذر 1390, 13:32 عصر
با سلام
ممنون از جواب شما.
خوب یعنی در این کد "Products", "products/{id}", "~/Products.aspx");
Products میشه صفحه ارسالی .
products/{id} میشه نمایش محصول با اون id .
~/Products.aspx صفحه مقصد .

خوب حالا نمیشه products/{id} رو به عدد دیگه ای تغیر داد چون در نهایت به این صورت نمایش میده WebSite6/Products/5

hamid_shrk
چهارشنبه 23 آذر 1390, 13:35 عصر
خوب حالا نمیشه products/{id} رو به عدد دیگه ای تغیر داد چون در نهایت به این صورت نمایش میده WebSite6/Products/5

منظورتون از عدد دیگه چیه؟خوب اون Id رو شما هرچی بدید تو کوئری استرینگ ارسال میشه.

fakhravari
چهارشنبه 23 آذر 1390, 14:20 عصر
بله درسته.
ما id محصول را ارسال میکنیم.
برای نمایش برای مثال id = 10 میشه Products/10
نمیشه جای اون 10 یه چیز دیگه گذاشت

hamid_shrk
چهارشنبه 23 آذر 1390, 14:29 عصر
میتونید جای Id اسم محصول رو بفرستید ،اون وقت تو صفحه محصولات با title واکشی کنید دیتا رو ، تو url routin سعی کنید عدد نزارید چون خوانایی رو از بین میبره.

crazy_1892
پنج شنبه 01 دی 1390, 19:10 عصر
سلام دوست عزیز من به شکل زیر استفاده کردم

<a href='<%# Eval("ID","~/NewsShow/{0}") %>' title='<%# Eval("Sub") %>'>

ولی آدرس لینک را به شکل زیر نمایش میده
http://localhost:3641/Teacher-test/~/NewsShow/24

hamid_shrk
شنبه 03 دی 1390, 08:57 صبح
سلام ، بجاش از این استفاده کن :

<a href='<%# Eval("ID","../NewsShow/{0}") %>' title='<%# Eval("Sub") %>'>

crazy_1892
شنبه 03 دی 1390, 11:21 صبح
سلام ، بجاش از این استفاده کن :

<a href='<%# Eval("ID","../NewsShow/{0}") %>' title='<%# Eval("Sub") %>'>




با سلام دوست عزیز با این روش هم حواب داد و آدرس را به شکل زیر تغییر می دهد
http://localhost:3641/NewsShow/27
در صورتی که باید به شکل زیر باشد
http://localhost:3641/Teacher-test/NewsShow/27
Sequence contains no elements

hamid_shrk
شنبه 03 دی 1390, 11:27 صبح
Teacher-tes (http://localhost:3641/Teacher-test/NewsShow/27)t اسم پروژتونه؟

crazy_1892
شنبه 03 دی 1390, 19:47 عصر
بله نام پروژه هست

hamid_shrk
یک شنبه 04 دی 1390, 08:28 صبح
خوب مشکلی نیست ، دستوری که من استفاده کردم میاد از root سایت شروع میکنه و فقط تو local مشکل داره ، البته اصلش اینه که از ~ استفاده کنید بجای /..

crazy_1892
یک شنبه 04 دی 1390, 09:11 صبح
دوست عزیزم من تعداد صفحات بالایی را می خوام تبدیل کنم دستوری نیست که بتونم تو local تست کنم ؟؟

hamid_shrk
یک شنبه 04 دی 1390, 09:15 صبح
تو لوکال اسم پروژتون رو هم بزارید قبلش :
../Teacher-tes (http://localhost:3641/Teacher-test/NewsShow/27)t من خودم به این مشکل که میخورم این کار رو میکنم

crazy_1892
دوشنبه 05 دی 1390, 23:09 عصر
سلام دوست عزیز صفحاتی که querystring داره مشکلی نداره ولی...
اگه میشه لطف کن کدهای زیر را یک نگاه بنداز ببین کجاش مشکل داره

فایل Global

routes.MapPageRoute(
"NewsShow-browse", "NewsShow/{Id}.html", "~/NewsShow.aspx");


html:


<a href='<%# Eval("ID","../Teacher-kari/NewsShow/{0}.html") %>' title='<%# Eval("Sub") %>'>


code-behind:


DataClassesDataContext LL = new DataClassesDataContext();
var query = from c in LL.news1s
where c.status == true && c.Id == int.Parse(Request.QueryString["Id"].ToString())
select new { c.Date, c.Sub, c.Descrip };

hamid_shrk
سه شنبه 06 دی 1390, 08:28 صبح
Request.QueryString["Id"].ToString()

مشکل اول اینه که کوئری استرینگ رو تو این حالت باید اینجوری بگیری :

Page.RouteData.Values["Id"]

وبعد اینکه :


<%# Eval("ID","../Teacher-kari/NewsShow/{0}.html") %>

کوئری استرینگ رو موقع ارسال نباید بین {} بذارید

crazy_1892
سه شنبه 06 دی 1390, 13:36 عصر
دوست عزیز وقتی می خوام شرطی را به شکل زیر چک کنم خطا میده باید چی کار کنم

Page.RouteData.Values["Page"].ToString() != null)

hamid_shrk
سه شنبه 06 دی 1390, 13:40 عصر
دوست عزیز وقتی می خوام شرطی را به شکل زیر چک کنم خطا میده باید چی کار کنم

Page.RouteData.Values["Page"].ToString() != null)
خیلی سادس اینجوری بنویس :


Page.RouteData.Values["Page"] != null)

crazy_1892
سه شنبه 06 دی 1390, 20:13 عصر
دوست شرمنده بابا این همه سوال

من سایتم آپلود کردم ولی خطا زیر را میده
500 - Internal server error.

There is a problem with the resource you are looking for, and it cannot be displayed.

اینم متذکر بشم که بر روی یک دامین دیگر قبل از Routing آپلود کردم هیچ مشکلی نداره آیا کار خاص دیگری باید انجام بدم

xalerebvar
شنبه 17 دی 1390, 13:52 عصر
سلام به همگی،
مرسی از مقاله جالبتون راجع به Routing، یه سئوال داشتم
اگه بخواهیم به جای افزودن مقدار Route شده آنرا به ابتدای آدرس وب سایت (مانند Yourname.sitename.com) اضافه کنیم چکار بایسیی انجام بدیم
من دسترسی کامل به امکانات هاست پنلم دارم اما Ip اختصاصی ندارم آیا بدون داشتن Ip اختصاصی می توان اینکار رو انجام داد، تو یکی از تاپیک ها بحث شده بود اما مشکل من اینه که هر بار کاربر بخواد یه اسمی به اول آدرس اضافه کنه وب سایت من بالا نمی یاد و به آدرس سرور مراجعه می کنه

hamid_shrk
شنبه 17 دی 1390, 15:56 عصر
دقیق متوجه نشدم منظورتون رو ..
اگه منظ.رتون اینه که با کلیک رو یه لینک به یک سایت خارج از پروژه بره متاسفانه این امکان وجود نداره.

xalerebvar
شنبه 17 دی 1390, 17:35 عصر
دقیق متوجه نشدم منظورتون رو ..
اگه منظ.رتون اینه که با کلیک رو یه لینک به یک سایت خارج از پروژه بره متاسفانه این امکان وجود نداره.
حمید جان منظورم همون کاریه که سرویس بلاگفا انجام میده یعنی هرکاربری که با یک UserName رجیستر می کنه همون UserName بشه ساب دامین سایت(البته از نوع مجازیش چون امکان ساختن ساب دامین واقعی برای هر کاربر و در همان لحظه وجود نداره) مثلا شما تو وب سایت ثبت نام می کنی و با اسم کاربریت یه ساب دامین مجازی ساخته بشه (مانند http://UserName.sitename.com).
ممنون

hamid_shrk
شنبه 17 دی 1390, 17:44 عصر
این امکان وجود نداره اما میتونی مثل فیس بوک نام کاربری هرکسی رو بزاری پشت آدرس سایت :
http://www.sitename.com/UserName

crazy_1892
شنبه 17 دی 1390, 19:27 عصر
سلام دوست عزیز من از routing استفاده کردم پس از آپلود کار نمیکنه آیا امکان داره به خاطر اینکه از websitepanel استفاده می کنم باشم؟؟

FirstLine
شنبه 17 دی 1390, 21:06 عصر
سلام دوست عزیز من از routing استفاده کردم پس از آپلود کار نمیکنه آیا امکان داره به خاطر اینکه از websitepanel استفاده می کنم باشم؟؟

با سلام
من هم همین مشکل رو دارم
http://barnamenevis.org/showthread.php?322069

خطا نمیده ولی کار نمیکنه
آدرسش http://robatnews.net/NewsIT که در اصل باید آدرس http://robatnews.net/NewsIT.aspx را لوود کنه و یا http://robatnews.net/news902 که در اصل باید آدرس http://robatnews.net/news.aspx?id=902 را لوود کند اما کار نمیکند
بصورت لوکالی روی کامپیوتر خودم کار میکنه ولی وقتی آپلوود میشه روی هاست کار نمیکنه


با تشکر

programer-ir
شنبه 17 دی 1390, 22:44 عصر
سلام در فایل وب کانفیگ این خط رو بنویسید و پروژه رو روی لوکال یک بار اجرا بعد دوباره آپلود کنید


<modules runAllManagedModulesForAllRequests="true"></modules>

FirstLine
یک شنبه 18 دی 1390, 07:29 صبح
سلام در فایل وب کانفیگ این خط رو بنویسید و پروژه رو روی لوکال یک بار اجرا بعد دوباره آپلود کنید


<modules runAllManagedModulesForAllRequests="true"></modules>


با سلام
دوست عزیز خیلی ممنون.
این خط کد را در چه قسمت و زیر کدام یک از نودهای وب کانفیگ اضافه کنم؟
با تشکر

hamid_shrk
یک شنبه 18 دی 1390, 08:41 صبح
سلام باید این کد رو به وب کانفیگ اضافه کنید که دوستمون هم اشاره فرمودن:

<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Rohollaes
جمعه 30 دی 1390, 19:13 عصر
روی هاست جواب نمیده, باید چیکا کنم؟
دستور modules رو توی وب کانفیگ که قرار میدم خطای 500 رو میده
اما روی لوکال همه چی درسته

Hossein Bazyan
چهارشنبه 12 بهمن 1390, 17:41 عصر
سلام
نوبتی هم باشه نوبت منه که سوال بپرسم!

مال من همه چیز خوب کار میکنه فقط سه مشکل داریم



من کدهای خواندن پارامترها رو در فرم لود قرار دادم و پس از دیباگ متوجه شدم که فرم لود به تعداد زیاد دفعات فراخوانی میشه
دوم اینکه فقط در فراخوانی اول پارمترها رو میخونه و در بقیه دستورات جاوا یا نام عکسها یا علامت ~ را میخونه ایا راهی هست که بشه اینها رو نخوند ؟ من از Ignore خواستم استفاده کنم اما نشد شاید هم بلد نبودم.
سوم اینکه من صفحه ای دارم که از صفحات مختلف با پارامترهای مختلف فراخوانی میشه مثلا از صفحه ای فقط دو پارامتر ارسال میشه و از یه صفحه همه پارامترها ارسال میشن . حال برای خوانده صفحه ای که فقط دو پارامتر داره باید چکار کنم ؟ اگر بجای بقیه پارامترها از / استفاده کنم که خیلی ناخوانا میشه و اگر استفاده نکنم نمیشه

hamid_shrk
پنج شنبه 13 بهمن 1390, 09:13 صبح
من کدهای خواندن پارامترها رو در فرم لود قرار دادم و پس از دیباگ متوجه شدم که فرم لود به تعداد زیاد دفعات فراخوانی میشه

یعنی چی؟


دوم اینکه فقط در فراخوانی اول پارمترها رو میخونه و در بقیه دستورات جاوا یا نام عکسها یا علامت ~ را میخونه ایا راهی هست که بشه اینها رو نخوند ؟ من از Ignore خواستم استفاده کنم اما نشد شاید هم بلد نبودم.

متوجه منظورتون نشدم.


سوم اینکه من صفحه ای دارم که از صفحات مختلف با پارامترهای مختلف فراخوانی میشه مثلا از صفحه ای فقط دو پارامتر ارسال میشه و از یه صفحه همه پارامترها ارسال میشن . حال برای خوانده صفحه ای که فقط دو پارامتر داره باید چکار کنم ؟ اگر بجای بقیه پارامترها از / استفاده کنم که خیلی ناخوانا میشه و اگر استفاده نکنم نمیشه

برای اینکار میتونید برای اون صفحه چندین روتینگ بنویسید.
مثلا یکی واسه اینکه فقط با اسم خود صفحه فراخوانی شد بازش کنه.
یکی برای اینکه با 2 تا پارامتر
یکی برای اینکه با 4 تا پارامتر
و الی آخر

Hossein Bazyan
پنج شنبه 13 بهمن 1390, 10:28 صبح
یعنی چی؟

متوجه منظورتون نشدم.

برای اینکار میتونید برای اون صفحه چندین روتینگ بنویسید.
مثلا یکی واسه اینکه فقط با اسم خود صفحه فراخوانی شد بازش کنه.
یکی برای اینکه با 2 تا پارامتر
یکی برای اینکه با 4 تا پارامتر
و الی آخر
سلام
میشه یه مثال بزنید ؟

hamid_shrk
پنج شنبه 13 بهمن 1390, 10:33 صبح
بله :

System.Web.Routing.RouteTable.Routes.MapPageRoute("home",
"home",
"~/home.aspx");
System.Web.Routing.RouteTable.Routes.MapPageRoute("home",
"home/{Product}",
"~/home.aspx");
System.Web.Routing.RouteTable.Routes.MapPageRoute("home",
"home/{Product}/{Name}",
"~/home.aspx");

Hossein Bazyan
پنج شنبه 13 بهمن 1390, 12:07 عصر
دوم اینکه فقط در فراخوانی اول پارمترها رو میخونه و در بقیه دستورات جاوا یا نام عکسها یا علامت ~ را میخونه ایا راهی هست که بشه اینها رو نخوند ؟ من از Ignore خواستم استفاده کنم اما نشد شاید هم بلد نبودم.


سلام
مشکل سوم حل شد اما مشکل بالا هنوز مونده
قبلا که از Routing استفاده نمیکردم Page_load یکبار فراخوانی میشد اما الان بیشتر از ده بار فراخوانی میشه و فقط بار اول پارامترها را درست میگیرد برای بارهای دیگر یه چیزهای عجیبی را به پارامترها نسبت میدهد
اینهم کدهای من برای گرفتن پارامترها

arId = Page.RouteData.Values("arId").ToString



اگر مثلا پارامتر ارسالی به این متغییر Bazyan باشد در اولین فراخوانی Page_load مقدار Bazyan را به متغییر arId میدهد اما تابع Page_load دوباره و چندین باره فراخوانی میشه و هر بار یه مقدار عجیب به arId نسبت داده میشه مثلا jquery-ui.min.js یا onderdeel.png به متغییر arId نسبت داده میشود
در ضمن مقادیر jquery-ui.min.js یا onderdeel.png یه همه مقادیر نسبت داده شده به متغییر اجزا یا نام خود فایلهایی است که در برنامه استفاده شده است.
در شکل زیر من چهار بار فراخوانی را نوشته ام ( البته حدود 10 بار page_load فراخوانی میشه ) که فقط بار اول مقدار صحیح برگشت داده شده است.

Hossein Bazyan
شنبه 15 بهمن 1390, 15:52 عصر
سلام

حمید خان حلش کردم. مشکل از مسیرها بود مثلا برای چسپاندن فایل Css من به شکل زیر استفاده کرده بودم

<link href="~/stylesheets/tabs/jquery.tabs-ie.css" rel="stylesheet" type="text/css" />
که باید به شکل زیر استفاده میکردم
<link href="http://www.broesk.nl/stylesheets/tabs/jquery.tabs-ie.css" rel="stylesheet" type="text/css" />
که مورد فوق باید در تمامی عکسها و فایلهای جاوا و غیره تغییر میکرد حالا فقط یک بار Page_load فراخوانی میشه

hamid_shrk
شنبه 15 بهمن 1390, 15:56 عصر
کار درستی نیست که بخواید آدرس سایت رو دستی بذارید پشتش.
فکر میکنم اگه با این دستور آدرس بدید مشکلتون حل بشه چون من اینکارو کردم:
<link href="../stylesheets/tabs/jquery.tabs-ie.css" rel="stylesheet" type="text/css" />

Hossein Bazyan
شنبه 15 بهمن 1390, 16:05 عصر
سلام
امتحان کردم نمیشه باز هم فراخوانی میکنه . اما مهم نیست به این شکل هم خوبه
به هر حال ممنون . من این مطلبو نمیدانستم و از شما یاد گرفتم

ASP.NET2
شنبه 29 بهمن 1390, 11:36 صبح
سلام .
یه سوال داشتم ! اگه بخواییم که برا صفحه هایی که static هستن این کارو بکنیم چطور باید عمل کنیم؟
برا مثال : من می خوام که صفحه yourdomain.com/about.aspx به صورت yourdomain.com/about نشون داره بشه.
من برا این کار تو فایل Global این کارو کردم:

public static void RegisterRoutes(RouteCollection routes)
{
RouteTable.Routes.MapPageRoute("about","about","~/about.aspx");



}

protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}

ولی در مورد اینکه وقتی رو hyperlink کلیک میشه مشکل داره >>
اگه به این صورت باشه که اصلا navigate نمیشه و فقط بصورت text نمایش داده میشه


<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Page.GetRouteUrl("about")%>'>HyperLink</asp:HyperLink>
واگه به این صورت نوشته شه >>


<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%Page.GetRouteUrl("about")%>'>HyperLink</asp:HyperLink>

خطا میده
Server Error in '/' Application.

HTTP Error 400 - Bad Request.

Version Information: ASP.NET Development Server 10.0.0.0

ramin149
یک شنبه 03 اردیبهشت 1391, 11:33 صبح
با سلام و خسته نباشید

من دارم یک سایت برای پزشکان طراحی می کنم ، یک پوشه به نام Doctors دارم که داخل اون یک صفحه به نام Articles.aspx وجود داره می خوام از طریف repeter وقتی کلیک میکنه روی نمایش ، آدرس زیر نمایش داده بشه http://localhost:6838/Doctors/ و حتی اسم صفحه هم نمایش داده نشه ، لازم به ذکره که مجبورم 2 پارامت ارسال کنم یک برای کد مقاله و یکی کد پزشک چطور باید این کار رو انجام بدم
مسیر مورد نظرم رو به این شکل نمایش بده

ramin149
یک شنبه 03 اردیبهشت 1391, 11:49 صبح
چطور به جای id عنوان رو قرار بدیم ؟؟؟

باید دراخل global هم تغییرات ایجاد کنیمم؟

hamid_shrk
یک شنبه 03 اردیبهشت 1391, 21:00 عصر
دوست عزیز شما خودتون دارید میگید که میخواید پارامتر بفرستید پس لازم هست که این پارامتر ها رو تو آدرستون بیارید.
چند راه حل وجود داره :
1- کد دکتر رو + کد مقاله در آدرس صفحه قرار بدید :


http://localhost:6838/Doctors/1254-251
2 - به کد بالا عنوان مقاله رو هم اضافه کنید ولی باهاش کاری نداشته باشید (درست مثل آدرس تاپیک های همین سایت برنامه نویس)


doctors/1254-251-چشم-پزشکی-در-ایران (http://localhost:6838/Doctors/)
3 - کلا از عنوان ها بجای کدها استفاده کنید و دیتا رو هم با این عنوان ها از دیتابیس واکشی کنید :



Doctors/Rezaei/چشم-پزشکی-در-ایران (http://localhost:6838/Doctors/)
و همینطور ترکیب روشهای گفته شده.
* البته نمیدونم چرا این ادیتور فارسی ها رو میاره اول!!!! منظور اینه که باید آخر قرار بگیرند عنوان ها
موفق باشید

ramin149
دوشنبه 04 اردیبهشت 1391, 08:49 صبح
ممنونم چطور به جای id عنوان رو قرار بدم ؟؟؟ میشه تضیح بدید ؟؟ من روشی که شما گفتید رو استفاده کردم ولی حالا میخوام به جای id همون عنوان رو بفرستم ولی در صفحات بعد از id بتونم استفاده کنم

kingmech
دوشنبه 04 اردیبهشت 1391, 11:01 صبح
ممنونم چطور به جای id عنوان رو قرار بدم ؟؟؟ میشه تضیح بدید ؟؟ من روشی که شما گفتید رو استفاده کردم ولی حالا میخوام به جای id همون عنوان رو بفرستم ولی در صفحات بعد از id بتونم استفاده کنم

برای اینکار باید از سشن استفاده کنید

hamid_shrk
دوشنبه 04 اردیبهشت 1391, 20:24 عصر
برای اینکار باید از سشن استفاده کنید

دوست عزیز دقت کنید که ایشون دارن روی یک لینک در ریپیتر کلیک میکنند و برای ساخت سشن یا باید از جاوا اسکریپت استفاده کنند یا تو کد بیهاین اینکارو کنن که خیلی پیچیده میشه.


ممنونم چطور به جای id عنوان رو قرار بدم ؟؟؟

چطور دارید Id رو میفرستید الان؟با Eval دیگه؟؟
خوب حالا بیاید فیلد عنوان رو بزارید تو eval وبرای خواندن اطلاعات هم با id اطلاعات رو از دیتابیس نخونید ، بلکه عنوان رو که بعنوان پارامتر فرستادید بخونید (آموزش نحوه خواندن پارامتر از url در پست اول گفته شده) و با توجه به اون عنوان اطلاعات رو select کنید مثلا :

SELECT * FROM Table WHERE Title=@Title

b.paseban
چهارشنبه 06 اردیبهشت 1391, 16:38 عصر
سلام بر همه دوستان.
آموزش خوب و مفیدی بود.
من متنی رو بعنوان Route URL استفاده کردم ولی فضاهای خالی در url با علامت 20% نمایش داده میشه.
برای حل این مسکل چکار باید کرد.
ممنون.

kingmech
چهارشنبه 06 اردیبهشت 1391, 17:16 عصر
سلام بر همه دوستان.
آموزش خوب و مفیدی بود.
من متنی رو بعنوان Route URL استفاده کردم ولی فضاهای خالی در url با علامت 20% نمایش داده میشه.
برای حل این مسکل چکار باید کرد.
ممنون.
وقتی دارید ادرس رو میسازید فاصله رو با - پر کنید

b.paseban
چهارشنبه 06 اردیبهشت 1391, 17:37 عصر
میشه با کد راهنمایی کنید؟

hamid_shrk
چهارشنبه 06 اردیبهشت 1391, 21:11 عصر
سلام بر همه دوستان.
آموزش خوب و مفیدی بود.
من متنی رو بعنوان Route URL استفاده کردم ولی فضاهای خالی در url با علامت 20% نمایش داده میشه.
برای حل این مسکل چکار باید کرد.
ممنون.
نه نباید این اتفاق بیوفته!!
میتونم کدتون رو ببینم (قسمتی که لینک رو دارید میفرستید به صفحه جدید)؟


وقتی دارید ادرس رو میسازید فاصله رو با - پر کنید



میشه با کد راهنمایی کنید؟

از این کد میتونید استفاده کنید :


string url = "new page";
url = url.Replace(" ", "-");
Response.Redirect("news/"+url);

b.paseban
پنج شنبه 07 اردیبهشت 1391, 15:06 عصر
با تشکر از جواب شما.
من در صفحه ی اصلی(default.aspx)تعدادی خبر نمایش می دم که با یه hyperlink اون رو به یه صفحه ی دیگه (news.aspx >>>همراه با ارسال پارامتر title) هدایت می کنم به شکل زیر:


<asp:HyperLink ID="hpl" runat="server" Text='<%#Eval("Title")%>' NavigateUrl='<%# Eval("Title","~/news/{0}") %>' Target="_blank"></asp:HyperLink>

در صفحه news.aspx این پارامتر رو با استفاده از یه sqldatasource (کد زیر) دریافت میکنم و داخل یه datacontrol نمایش میدم(داخل یه gridview).


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="Title" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="NewsID" HeaderText="NewsID" InsertVisible="False" ReadOnly="True"
SortExpression="NewsID" />
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
<asp:BoundField DataField="Description" HeaderText="Description" SortExpression="Description" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:CS_Routing %>"
SelectCommand="SELECT [Title], [Description], [Body], [NewsID] FROM [Tbl_News] WHERE ([Title] = @Title)">
<SelectParameters>
<asp:RouteParameter Name="Title" RouteKey="Title" Type="String" />
</SelectParameters>
</asp:SqlDataSource>

کدهای global.asax هم به شکل زیر هست:


protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}

public static void RegisterRoutes(RouteCollection routeCollection)
{
routeCollection.MapPageRoute("RouteForCustomer", "news/{Title}", "~/news.aspx");

}


ممنون می شم به چند تا سوال من پاسخ بدین.
1:روش ارسال چند پارامتر و دریافت اون در صفحه ی دیگه چطوریه؟
2:برای اینکه کاربر بعد از وارد کردن آدرس news.aspx نمایش این آدرس رو بصورت news ببینه چه کار باید کرد؟(بدون ارسال پارامتر از صفحه ای دیگه)
3:چطوری میشه برای چند صفحه دیگه همین کار رو انجام داد؟(نمایش url به صورت دلخواه)

ASP.NET2
پنج شنبه 07 اردیبهشت 1391, 18:31 عصر
کسی نتونست سوال منو جواب بده ؟
این پست (http://barnamenevis.org/showthread.php?317763-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-url-routing-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA-4&p=1445565&viewfull=1#post1445565)

hamid_shrk
پنج شنبه 07 اردیبهشت 1391, 18:42 عصر
دوست عزیز الان منظورتون رو متوجه شدم ، تو آدرس بار اسپیس رو به خوبی نشون میده اما تو عنوان صفحه %20 میزاره درسته؟؟
برای رفع این مشکل تو page_load صفحه مقصد این کد رو بنویسید :


Page.Title = Page.RouteData.Values["Title"].ToString();

-----------


1:روش ارسال چند پارامتر و دریافت اون در صفحه ی دیگه چطوریه؟

نحوه تعریفش اینطوریه :


routeCollection.MapPageRoute("RouteForCustomer", "news/{Title}/{date}", "~/news.aspx");

نحوه خواندن :


Page.Title = Page.RouteData.Values["Title"].ToString();
etring date = Page.RouteData.Values["date"].ToString();

-----------------------


2:برای اینکه کاربر بعد از وارد کردن آدرس news.aspx نمایش این آدرس رو بصورت news ببینه چه کار باید کرد؟(بدون ارسال پارامتر از صفحه ای دیگه)

اگه مستقیم بنویسه .aspx رو بعید میدنم راهی وجود داشته باشه (اگه هم باشه من بلد نیستم متاسفانه)
-----------------------


3:چطوری میشه برای چند صفحه دیگه همین کار رو انجام داد؟(نمایش url به صورت دلخواه)

به راحتی !! کافیه تو همون global.asax برای هر صفحه تعریف کنید :


routeCollection.MapPageRoute("RouteForCustomer", "news/{Title}", "~/news.aspx");
routeCollection.MapPageRoute("home", "home", "~/home.aspx");
routeCollection.MapPageRoute("contact", "contact", "~/contact_us.aspx");

موفق باشید

hamid_shrk
پنج شنبه 07 اردیبهشت 1391, 18:48 عصر
کسی نتونست سوال منو جواب بده ؟
این پست (http://barnamenevis.org/showthread.php?317763-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-url-routing-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AA-%D9%86%D8%AA-4&p=1445565&viewfull=1#post1445565)
با سلام ،
دوست عزیز نمیفهمم چرا ارور میگیرید چون من هم اینکار رو کردم و ربطی به استاتیک و داینامیک بودنش نداره مثال :


routes.MapPageRoute("order",
"order",
"~/order.aspx");

و توی لینکم هم اینطوری آدرس دادم :


<a href="order">سفارش آنلاین</a>

و داره کار میکنه.
ببینید شما تو کجا هستید که وقیتی رو لینک کلیک میکنید کار نمیکنه ؟ اگه یک مسیر جلوتر هستید باید با ایتفاده از ../ پشت لینک کار بکنه حتما

ramin149
دوشنبه 11 اردیبهشت 1391, 23:39 عصر
دوست عزیز دقت کنید که ایشون دارن روی یک لینک در ریپیتر کلیک میکنند و برای ساخت سشن یا باید از جاوا اسکریپت استفاده کنند یا تو کد بیهاین اینکارو کنن که خیلی پیچیده میشه.

چطور دارید Id رو میفرستید الان؟با Eval دیگه؟؟
خوب حالا بیاید فیلد عنوان رو بزارید تو eval وبرای خواندن اطلاعات هم با id اطلاعات رو از دیتابیس نخونید ، بلکه عنوان رو که بعنوان پارامتر فرستادید بخونید (آموزش نحوه خواندن پارامتر از url در پست اول گفته شده) و با توجه به اون عنوان اطلاعات رو select کنید مثلا :

SELECT * FROM Table WHERE Title=@Title



مشکل اینجاست که ممکنه چند عنوان با نام های مشابه وجود داشته باشه مثلا دو پزشک با یک نام ، بعد تکلیف چیه؟

hamid_shrk
دوشنبه 11 اردیبهشت 1391, 23:54 عصر
مشکل اینجاست که ممکنه چند عنوان با نام های مشابه وجود داشته باشه مثلا دو پزشک با یک نام ، بعد تکلیف چیه؟
بله شما درست میفرمایید ، به نظر من بهتره که شما id رو بفرستید به صفحه جدید و با id کار کنید ولی برای خوانایی با یک "-" عنوان رو هم اضافه کنید ، مثلا به آدرس صفحات تو همین برنامه نویس دقت کنید ، الان همین تاپیکی که توش هستیم رو شما چنانچه با این آدرس هم بزنید باز میشه : http://barnamenevis.org/showthread.php?317763
این یعنی عنوان تاپیک هیچ نقشی تو واکشی اطلاعات از دیتابیس نداره و صرفا برای خوانایی و سئو هست ، پیشنهاد من اینه که شما هم از همین روش استفاده کنید.

imanasp
چهارشنبه 10 خرداد 1391, 13:55 عصر
دوستان من میخام این آدرس /CategoryList.aspx?value=categoryId به این Category-List/1 تغییر کنه با Routing و با .net 4.0
من این شکلی نوشتم ولی جواب نداد:
void RegistreRoutes(System.Web.Routing.RouteCollection routes)
{
routes.MapPageRoute(
"Category-List",
"CategoryList/CategoryId",
"~/CategoryList.aspx"
);
}

imanasp
پنج شنبه 11 خرداد 1391, 07:58 صبح
دوستان عزیز القدر من بهش نیاز دارم لطفا راهنمایی کنید

ramin149
شنبه 03 تیر 1391, 10:33 صبح
دوستان من میخام این آدرس /CategoryList.aspx?value=categoryId به این Category-List/1 تغییر کنه با Routing و با .net 4.0
من این شکلی نوشتم ولی جواب نداد:
void RegistreRoutes(System.Web.Routing.RouteCollection routes)
{
routes.MapPageRoute(
"Category-List",
"CategoryList/CategoryId",
"~/CategoryList.aspx"
);
}


باید به این صورت بنویسید



void RegistreRoutes(System.Web.Routing.RouteCollection routes)
{
routes.MapPageRoute(
"Category-List",
"CategoryList/{CategoryId}",
"~/CategoryList.aspx"
);
}
}




پارامتر های دریافتی رو باید در {} قرار بدید

ramin149
شنبه 03 تیر 1391, 10:48 صبح
با سلام و خسته نباشید

من از url roting واسه پروژه ام استفاده کردم ولی به یک مشکل برخورد کردم ، مشکل اینجاست که بعد از rout کردن به صفحه مورد نظر کلیه لینک های صفحه رو تحت تاثیر قرار میده ، مثلا یک لینک دارم به صورت زیر
localhost:2160/News/1/

حالا روی هر لینک که کلیک میکنم به انتهای لینک قبلی متصل میشه چیکار کنم ؟؟؟

Hossein Bazyan
شنبه 03 تیر 1391, 12:05 عصر
با سلام و خسته نباشید

من از url roting واسه پروژه ام استفاده کردم ولی به یک مشکل برخورد کردم ، مشکل اینجاست که بعد از rout کردن به صفحه مورد نظر کلیه لینک های صفحه رو تحت تاثیر قرار میده ، مثلا یک لینک دارم به صورت زیر
localhost:2160/News/1/

حالا روی هر لینک که کلیک میکنم به انتهای لینک قبلی متصل میشه چیکار کنم ؟؟؟


سلام همین مشکل رو منم داشتم حتی لینکهای css و جاوا و جی کوئری هم رو حت تاثیر قرار میداد . همینجا هم پرسیدم اما به جواب نرسیدم در آخر لینکهای css و jQeury و عکسها و غیره را بصورت کامل نوشتم مشکل حل شد.

ramin149
شنبه 03 تیر 1391, 12:46 عصر
سلام همین مشکل رو منم داشتم حتی لینکهای css و جاوا و جی کوئری هم رو حت تاثیر قرار میداد . همینجا هم پرسیدم اما به جواب نرسیدم در آخر لینکهای css و jQeury و عکسها و غیره را بصورت کامل نوشتم مشکل حل شد.


برای من امکان این تغییری که شما گفتید وجود نداره ، من لینک هام پویا هستند ، خودشون پارامتر میگیرند

Hossein Bazyan
شنبه 03 تیر 1391, 15:08 عصر
برای من امکان این تغییری که شما گفتید وجود نداره ، من لینک هام پویا هستند ، خودشون پارامتر میگیرند

سلام
خوب لینکهای منهم پارامتر میگیرند منظور مرا نفهمیدید. من به پارامترها کاری ندارم .
فرض کنیم که یه عگی داریم در لوکیشن
/images/template/test.png/~
منظورم من دقیقا آدرس قبل از images است که بصورت زیر تعریف کرده ام

http://www.test.nl/images/template/test.png

برای اینکه لوکال با آن لاین هم همیشه سنکرون باشند و مجبور نباشم بعد از اینکه فایلها را به سرور منتقل کردم هر بار آدرس لوکال را با آدرس آن لاین عوض کنم در قسمت Connectionstring در فایل web.config هم تگی ساخته ام بنام WebPath که در لوکال مقدار آنرا با localhost/ و در آن لاین هم با مقدار http://www.test.nl/ مقدار دهی کرده ام و در آدرس بالا بجای آدرس سرور این مقدار را از وب کانفیگ خوانده و قرار میدهم.

kingmech
شنبه 03 تیر 1391, 17:15 عصر
چجوری برا ساب دامین استفاده کنیم ازش

monika
دوشنبه 05 تیر 1391, 00:39 صبح
<a href='<%# Eval("ID","~/NewsShow/{0}") %>' title='<%# Eval("Sub") %>'>

دوست عزیز Subدراینجا چی هست؟

monika
دوشنبه 05 تیر 1391, 00:51 صبح
دوستان من در قسمت مدیریتم می خوام لیست لینک صفحات رو در جلو Titleهرصفحه در LABELبه مدیر نشون بدم و اون وقتی میخواد در ادیتور لینکی به صفحات داشته باشه راحتآدرس سایت رو کپی کنه و در UrlادیتورPASTEکنه برنامه روتااینجا به این صورت نوشتم

<asp:EntityDataSource ID="EntityDataSource2" runat="server"
ConnectionString="name=DrEntities" DefaultContainerName="DrEntities"
EnableFlattening="False" EntitySetName="Pages">
</asp:EntityDataSource>
<asp:Repeater ID="rpPages" runat="server" DataSourceID="EntityDataSource1">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink ID="hlPage" runat="server" Text='<%#Eval("PageTitle") %>' NavigateUrl='<%#Eval("PageID","~/ShowPages.aspx?PageID={0}") %>'>HyperLink</asp:HyperLink>
") %>'>
<asp:Label ID="PageTextLabel" runat="server" Text='<%# Eval(""PageID","../pages/{0}"") %>' />
</li>
</ItemTemplate>
<FooterTemplate></ul></FooterTemplate>
</asp:Repeater>


حالافقط در قسمت Textمربوط به Labelآدرس هرسایت روچطور میتونم بنویسم؟

mohsen_f_b
چهارشنبه 01 شهریور 1391, 00:37 صبح
سلام
دوستان بار اول که دارم در پروژه از این Url Routing استفاده می کنم. کلی مشکل با URL ها دارم. لطفا راهنمایی بفرمایید.
من مشکلی با QueryString اینا ندارم همش درست کار می کنه.
مشکل من اینجاست که یک لینک دارم به این شکل www.YourDomin.ir/Article/1/TestArticle
حالا توی اون Page چندتا لینک دارم. اون لینکها اینطوری نشون میده www.YourDomin.ir/Article/1/TestArticle/News وقتی علامت ~ هم میزارم به این شکل میشه www.YourDomin.ir/Article/1/TestArticle/~/News
از tag <a>دارم استفاده می کنم. کل لینک های که داخل سایت هست به همین مشکل خورده. مثلا www.YourDomin.ir/Article/1/TestArticle/www.googel.com
چکار کنم که همه لینک ها درست بشه؟ آخه توی فرم های ورودی طرف می تونه لینک به مطلب بده من که نباید دونه دونه بشینم اونارو اصلاح کنم.
کل برنامه خوابیده. لطفا کمک کنید.

Global.asax

RouteTable.Routes.MapPageRoute("About-us", "About-us", "~/About-us.aspx");
RouteTable.Routes.MapPageRoute("Article", "article/{articleid}/{articlename}", "~/Article.aspx");
RouteTable.Routes.MapPageRoute("Contact-us", "Contact-us", "~/Contact-us.aspx");
RouteTable.Routes.MapPageRoute("Default", "Default", "~/Default.aspx");
RouteTable.Routes.MapPageRoute("Service", "Service/{ServiceID}/", "~/Service.aspx");


باتشکر
موفق باشید

hamid_shrk
چهارشنبه 01 شهریور 1391, 10:40 صبح
سلام،
دوست عزیز زیاد متوجه نشدم مشکل دقیق کجاست، اگه امکان داره کد های اون صفحه ای رو که توش به مشکل خوردید رو بزارید تا بررسی کنم.

orca13
یک شنبه 05 شهریور 1391, 19:40 عصر
سلام!
آقا من نزدیک دو ساعته دارم این تاپیک و تاپیک شبیه سازی و MSDN رو میخونم، آخرم نفهمیدم باید چجوری ازین روش استفاده کنم!

اگه لطف کنید در مورد تغییرنام صفحاتی ک در روت هستند (مثلا Default و Contact و...) توضیح بدید، چجوری باید عمل کنم.
به طور مثال من واسه Default.aspx در Global.asax اینجوری نوشتم:
void registerRoute(RouteCollection routes)
{
RouteTable.Routes.MapPageRoute("", "Home", "~/Default.aspx");
}
void Application_Start(object sender, EventArgs e)
{
registerRoute(RouteTable.Routes);
}

و چیزی ک واسم مهمتره:
من یه صفحه دارم به نام User.aspx، داخلش یه سری کنترل هستش ک اطلاعات کاربران رو (براساس اسمشون ک از طریق Query string فرستاده میشه) نمایش میده. User.aspx?user=USERNAME

در صفحه اول سایت، یه GridView گذاشتم ک لیست کاربران ثبت نام شده رو نمایش میده (به صورت یک HyperLink) ک با کلیک روی هر نام به همین صفحه User ارجاع داده میشه (به همراه Query string مختص به خودش). حالا میخوام آدرس www.mydomain.com/User.aspx?user=USERNAME (http://www.mydomain.com/User.aspx?user=USERNAME) به www.mydomain.com/USERNAME (http://www.mydomain.com/USERNAME) تبدیل بشه.
ممنون میشم توضیح کامل بدین.

orca13
سه شنبه 07 شهریور 1391, 08:21 صبح
دوستان لطفا یه راهنمایی بکنید!
ممنون

rezaei manesh
یک شنبه 07 آبان 1391, 13:03 عصر
سلام
دوستان بار اول که دارم در پروژه از این Url Routing استفاده می کنم. کلی مشکل با URL ها دارم. لطفا راهنمایی بفرمایید.
من مشکلی با QueryString اینا ندارم همش درست کار می کنه.
مشکل من اینجاست که یک لینک دارم به این شکل www.YourDomin.ir/Article/1/TestArticle
حالا توی اون Page چندتا لینک دارم. اون لینکها اینطوری نشون میده www.YourDomin.ir/Article/1/TestArticle/News وقتی علامت ~ هم میزارم به این شکل میشه www.YourDomin.ir/Article/1/TestArticle/~/News
از tag <a>دارم استفاده می کنم. کل لینک های که داخل سایت هست به همین مشکل خورده. مثلا www.YourDomin.ir/Article/1/TestArticle/www.googel.com
چکار کنم که همه لینک ها درست بشه؟ آخه توی فرم های ورودی طرف می تونه لینک به مطلب بده من که نباید دونه دونه بشینم اونارو اصلاح کنم.
کل برنامه خوابیده. لطفا کمک کنید.

Global.asax

RouteTable.Routes.MapPageRoute("About-us", "About-us", "~/About-us.aspx");
RouteTable.Routes.MapPageRoute("Article", "article/{articleid}/{articlename}", "~/Article.aspx");
RouteTable.Routes.MapPageRoute("Contact-us", "Contact-us", "~/Contact-us.aspx");
RouteTable.Routes.MapPageRoute("Default", "Default", "~/Default.aspx");
RouteTable.Routes.MapPageRoute("Service", "Service/{ServiceID}/", "~/Service.aspx");


باتشکر
موفق باشید

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

<img alt="" src='../../UserPic/ads/medume/<%#Eval("ImgAds")%>.jpg' >
که اگه http://localhost:49562/T100/ads/fa باشه درست کار می کنه اما اگه http://localhost:49562/T100/ads/fa/20 باشه یا http://localhost:49562/T100/ads/fa/20/14 باشه درست کار نمی کنه

m_akbari11
چهارشنبه 20 دی 1391, 13:23 عصر
سلام
دوستان بار اول که دارم در پروژه از این Url Routing استفاده می کنم. کلی مشکل با URL ها دارم. لطفا راهنمایی بفرمایید.
من مشکلی با QueryString اینا ندارم همش درست کار می کنه.
مشکل من اینجاست که یک لینک دارم به این شکل www.YourDomin.ir/Article/1/TestArticle
حالا توی اون Page چندتا لینک دارم. اون لینکها اینطوری نشون میده www.YourDomin.ir/Article/1/TestArticle/News وقتی علامت ~ هم میزارم به این شکل میشه www.YourDomin.ir/Article/1/TestArticle/~/News
از tag <a>دارم استفاده می کنم. کل لینک های که داخل سایت هست به همین مشکل خورده. مثلا www.YourDomin.ir/Article/1/TestArticle/www.googel.com
چکار کنم که همه لینک ها درست بشه؟ آخه توی فرم های ورودی طرف می تونه لینک به مطلب بده من که نباید دونه دونه بشینم اونارو اصلاح کنم.
کل برنامه خوابیده. لطفا کمک کنید.

Global.asax

RouteTable.Routes.MapPageRoute("About-us", "About-us", "~/About-us.aspx");
RouteTable.Routes.MapPageRoute("Article", "article/{articleid}/{articlename}", "~/Article.aspx");
RouteTable.Routes.MapPageRoute("Contact-us", "Contact-us", "~/Contact-us.aspx");
RouteTable.Routes.MapPageRoute("Default", "Default", "~/Default.aspx");
RouteTable.Routes.MapPageRoute("Service", "Service/{ServiceID}/", "~/Service.aspx");


باتشکر
موفق باشید


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

<img alt="" src='../../UserPic/ads/medume/<%#Eval("ImgAds")%>.jpg' >
که اگه http://localhost:49562/T100/ads/fa باشه درست کار می کنه اما اگه http://localhost:49562/T100/ads/fa/20 باشه یا http://localhost:49562/T100/ads/fa/20/14 باشه درست کار نمی کنه

سلام به همه دوستان .

دوستان این مشکل با روش زیر حل میشه : "Page.ResolveUrl" -- "به مثال زیر دقت کنید :"


<img src='<%=Page.ResolveUrl("~/NEC/Allah.png")%>' title='<%=Page.ResolveUrl("~/NEC/Allah.png")%>' />


به آدرستون (عکس یا لینکتون ) فقط یک علامت /~ اضافه کنید و به وسیله Page.ResolveUrl (همانند مثال بالا) آن را بخوانید . با این روش تمام لینک ها و تصاویر شما کاملا صحیح نمایش داده خواهد شد .


اگر سوالی بود در خدمت هستم .

یا حق /

barzin144
دوشنبه 05 فروردین 1392, 02:25 صبح
تاپیک قدیمی هست ولی اگه میشه کمک کنید.
تو یه پروژه ساده تست کردم جواب داد دقیقا همون کارهارو تو پروژه اصلیم میکنم این ارور رو میده
cannot use a leading to exit above the top directory

kafinetetaha
دوشنبه 12 فروردین 1392, 22:15 عصر
این امکان وجود نداره اما میتونی مثل فیس بوک نام کاربری هرکسی رو بزاری پشت آدرس سایت :
http://www.sitename.com/UserName
سلام دوست عزیز اگه بخوای نام کاربری قبلش بیاد که یه بحثه
اگه جور دیگه ای بخوای استفاده کنی باید subdomain استفاده کنی البته اگه هاستی که سایت روش پابلیش شده این امکان داشته باشه

kafinetetaha
دوشنبه 12 فروردین 1392, 22:30 عصر
دوستان اگه بخوایم بجای این کار ها اون آدرس رو کد کنیم باید چیکار کنیم مثلا products/{id} رو sdjkdjfsghhgasfdgahas نمایش بدهیم لطفا کمک کنید شاید جای این تایپیک اینجا نباشه ولی بی ربط نیست

asadi.hasan
سه شنبه 13 فروردین 1392, 22:42 عصر
با سلام دوست عزیز با این روش هم حواب داد و آدرس را به شکل زیر تغییر می دهد
http://localhost:3641/NewsShow/27
در صورتی که باید به شکل زیر باشد
http://localhost:3641/Teacher-test/NewsShow/27
Sequence contains no elements
فکر کنم اگه runat=server برای تگ a بزارید،مشکل حل بشه.

elahe471
چهارشنبه 14 فروردین 1392, 00:01 صبح
سلام به همگی،
مرسی از مقاله جالبتون راجع به Routing، یه سئوال داشتم
اگه بخواهیم به جای افزودن مقدار Route شده آنرا به ابتدای آدرس وب سایت (مانند Yourname.sitename.com) اضافه کنیم چکار بایسیی انجام بدیم
من دسترسی کامل به امکانات هاست پنلم دارم اما Ip اختصاصی ندارم آیا بدون داشتن Ip اختصاصی می توان اینکار رو انجام داد، تو یکی از تاپیک ها بحث شده بود اما مشکل من اینه که هر بار کاربر بخواد یه اسمی به اول آدرس اضافه کنه وب سایت من بالا نمی یاد و به آدرس سرور مراجعه می کنه


سلام من هم قبلا به ایجاد Subdomain داینامیک نیاز داشتم ، فکر نکنم با Route بتونید اینکار رو انجام بدین ولی یه راهی که خودمم ازش استفاده کردم و به درستی کار میکنه ، ( اینجا (http://www.arianaltd.com/tabid/90/Articles/10/--Subdomain----.aspx) ) کاملا توضیح داده شده

mehr_83
یک شنبه 19 خرداد 1392, 23:56 عصر
با سلام
اگر آدرس صفحه بصورت
newpage.aspx?num=10&mod=20
باشه. اون موقع چه تغییراتی باید در کدها بدیم؟

hamid_shrk
دوشنبه 20 خرداد 1392, 09:08 صبح
با سلام
اگر آدرس صفحه بصورت
newpage.aspx?num=10&mod=20
باشه. اون موقع چه تغییراتی باید در کدها بدیم؟

فکر میکنم این مورد رو هم کامل توضیح داده باشم، هر کدام از پارامتر ها را بین /parameter/ قرار دهید:



newpage/10/20

imanasp
پنج شنبه 23 خرداد 1392, 12:32 عصر
من یک صفحه category دارم که id رو به اسم value رو رمز دار می کنه و به صفحه categoryList می فرسته که تو رویداد load اش نوشتم:

byte[] arrData = Convert.FromBase64String(Request.QueryString["value"]);
id = System.Text.Encoding.ASCII.GetString(arrData);
string query = Page.RouteData.Values[id] as string;
اما نکته جالب اینه که متغیر query رو null میده
این کد رو هم توی global گذاشتم:
routes.MapPageRoute(
"Category-show", "Category-list/{value}", "~/CategoryList.aspx"

barbodsoft.com
پنج شنبه 06 تیر 1392, 12:28 عصر
آقا من گیح شدم
هر چی سعی کردم از کدهای شما استفاده کنم نشد. هیچی نفهمیدم
من می خوام یک صفحه به صورت داینامیک(تو دیتابیس) بسازم و آدرسش رو از روش ruoting استفاده کنم و نمایش بدم. اگه می شه با مثال توضیح بدید ممنون می شم.
در ضمن اگه با vb.net باشه که عالی می شه.

mehr_83
یک شنبه 09 تیر 1392, 12:40 عصر
در این روش چطور میتوان .html را به انتهای url اضافه کرد؟

omid7240
یک شنبه 20 مرداد 1392, 19:01 عصر
با سلام تو این روش چطوری میشه
www.mydomain.com/Users/index.aspx
را به
www.mydomain.com
تبدیل کرد خیلی ممنون میشم راهنماییم کنید
خیلی اضطراریه باتشکر

mehr_83
چهارشنبه 29 آبان 1392, 19:16 عصر
ولی این روش با نمایش عکس ها مشکل داره. مسیر عکس ها عوض میشه و نمایش داده نمیشه. چکار باید کرد؟

azam2005
سه شنبه 19 آذر 1392, 15:30 عصر
راهی هست که سه لینک به صورت زیر داشته باشیم

products/title


products/title/2
products/title/3/4

من کد زیر را نوشتم ولی ایراد می گیره


routes.MapPageRoute("products", "products/{*title}/{*categorynum}/{*pagenum}", "~/Products.aspx")

azam2005
سه شنبه 19 آذر 1392, 16:22 عصر
اگر بخواهیم این آدرس را داشته باشیم چکار کنیم؟؟؟؟
www.sitename.com/کتاب (http://www.upvccenter.com/پروفیل)
که کلمه کتاب متغییر است

azam2005
جمعه 22 آذر 1392, 13:01 عصر
لینک زیر به صفحه FTB.aspx می رود ولی مقدار ID را به جای 1 ، null می دهد.اشتباهم کجاست؟؟؟؟؟؟
routes.MapPageRoute("About-Us", "About-Us", "~/FTB.aspx?ID=1")

rootail
یک شنبه 28 اردیبهشت 1393, 12:39 عصر
سلام دوستان من با روتینگ یه مشکلی دارم ما یه ادرس داریم به گونه ی زیر:


تردمیل/site/group/b12

به این دلیل که من اطلاعاتم رو با b12 سرچ و واکشی می کنم ، و در واقع با فیلد سوم که "تردمیل " باشه کاری ندارم ، اگر کاربر "تردمیل" رو به "تردم" تغییر بده باز هم صفحه ی مورد نظر باز میشه اما توی آدرس بار می نویسه : تردم/site/group/b12
ولی من می خوام ضمن اینکه صفحه ی مورد نظر باز بشه توی ادرس بار اسم رو هم اطلاح کنه و مجددا تردمیل/site/group/b12 رو برام نمایش بده.


راهنمایی کنید ممنون میشم.:افسرده::افسرده:

majid.mp
سه شنبه 07 مرداد 1393, 20:10 عصر
با سلام
دوستان چگونه میتوان نام اصلی صفحه را در روتینگ بدست آورد برای مثال آدرس روت شده : www.mydomain.com/test (http://www.mydomain.com/test) میباشد حال من قصد دارم نام صفحه test را بدست آورم؟

mhq1368
شنبه 19 مهر 1393, 08:35 صبح
با سلام خدمت دوستان


میخواستم بدونم چطور میشه چند پارامتر رو با url routing فرستاد.

با تشکر

Hossein Bazyan
شنبه 19 مهر 1393, 09:04 صبح
با سلام خدمت دوستان


میخواستم بدونم چطور میشه چند پارامتر رو با url routing فرستاد.

با تشکر


RouteTable.Routes.MapPageRoute("details", "details/{CatNaam}/{SubCatNaam}/{id}", "~/winkel/show_artikels.aspx", True, New RouteValueDictionary(New With {.CatNaam = "", .SubCatNaam = "", .id = ""}))

mhq1368
شنبه 19 مهر 1393, 09:17 صبح
RouteTable.Routes.MapPageRoute("details", "details/{CatNaam}/{SubCatNaam}/{id}", "~/winkel/show_artikels.aspx", True, New RouteValueDictionary(New With {.CatNaam = "", .SubCatNaam = "", .id = ""}))



سلام
ولی new with برای من خطا میگیره

در ضمن من چطور پارامتر ها رو در صفحه مورد نظر show_artikels.aspx بگیرم.(البته تو aspx نه code behind)

Hossein Bazyan
شنبه 19 مهر 1393, 09:27 صبح
این کد با وی بی نوشته شده و اگه بخوای با سی بنویسی بادی تغییرش بدی.
شما چرا میخوای پارامترها در در صفحه ASPX بگیری؟
البته اینکار هم میشه شما یه متغییر عمومی Public نعریف کن و در فرم لود با پارامترهات پرش کن و در فایل .aspx ازش استفاده کن

Hossein Bazyan
شنبه 19 مهر 1393, 09:29 صبح
اینم شیوه دریافت پارامترها :


Dim category As String = Trim(Page.RouteData.Values("CatNaam"))
Dim Subcategory As String = Trim(Page.RouteData.Values("SubCatNaam"))
Dim MainId As String = Trim(Page.RouteData.Values("id"))

sadegh.te
چهارشنبه 30 مهر 1393, 23:52 عصر
سلام منم یه سوال دارم همه چیز درست کار میکنه فقط وقتی سایت رو اجرا میکنم صفحه اولش .aspx رو داره ولی در ادامش همه چیز درست کار میکنه اگه میشه راهنمایی کنید که چطور پسوند صفحه

اول رو پاک کنم ممنون ؟

Hossein Bazyan
پنج شنبه 01 آبان 1393, 09:36 صبح
سلام منم یه سوال دارم همه چیز درست کار میکنه فقط وقتی سایت رو اجرا میکنم صفحه اولش .aspx رو داره ولی در ادامش همه چیز درست کار میکنه اگه میشه راهنمایی کنید که چطور پسوند صفحه

اول رو پاک کنم ممنون ؟

سلام

شما برای صفحه اولت حتما هیچ تعریفی تو گلوبال نکردی

اینو به گلوبالت اضافه کن


RouteTable.Routes.MapPageRoute("Home", "home", "~/default.aspx", True)

sadegh.te
پنج شنبه 01 آبان 1393, 10:16 صبح
وقتی True رو بهش اضافه میکنم eror میگیره دلیلش چیه؟

میگه پارامتر True وجود ندارد.

neda555
پنج شنبه 01 آبان 1393, 17:39 عصر
سلام برای این سه نمونه آدرس زیر به چه صورتی باید urlrouting انجام داد؟
1.

Member member = (Member)Session["Member"];
int id = Convert.ToInt32(member.ID.ToString());
prof.HRef = "../Admin/Profile.aspx?id=" + id;
2.

<a href="../Admin/member.aspx" id="showinfomem" runat="server" visible="false">مشاهده اطلاعات</a

3.

<a href="../../Admin/InfoDepartment/travel.aspx">مسافرت ها</a>

فعلا دارم رو لوکال تست میگرم لطفا راهنمایی کنید
چیزی که نوشتم:
1.

route.MapPageRoute("Prfile", "Profile/{id}", "~/Admin/Profile.aspx");
در صفحه profile :


int id =Convert.ToInt32 (Page.RouteData.Values["id"].ToString()); DLInfo.DataSource = DAL.MemberDAL.SelectUserByID(id);
DLInfo.DataBind();
ارور میده که id ست نمیشه null هستش
2.
route.MapPageRoute("member", "member", "~/Admin/member.aspx");
اصلا آدرس تغییر نمیکنه :
http://localhost:1065/Admin/member.aspx

3.
route.MapPageRoute("travel", "travel", "~/Admin/InfoDepartment/travel.aspx");
تغییر نمیکنه آدرس !!! ولی http://localhost:1065/travel رو هم که میزنم جواب میده!

Hossein Bazyan
پنج شنبه 01 آبان 1393, 20:03 عصر
وقتی True رو بهش اضافه میکنم eror میگیره دلیلش چیه؟

میگه پارامتر True وجود ندارد.


نه برای من که با وی بی کار میکنم و ایرور نمیده شاید با سی پیغام ایرور بده. حذفش هم کنی چیزی نمیشه .

sadegh.te
پنج شنبه 01 آبان 1393, 22:39 عصر
حالا یه راه حل بدین که من اینو چیکارش کنم.؟؟

Hossein Bazyan
پنج شنبه 01 آبان 1393, 23:28 عصر
حالا یه راه حل بدین که من اینو چیکارش کنم.؟؟

دوست عزیز ، شما نگفتید که از چه زبونی استفاده میکنید. من با وی بی در همه پروژه هام استفاده میکنم و مشکلی هم پیش نیومده . البته من با وی بی کار میکنم

sadegh.te
جمعه 02 آبان 1393, 10:19 صبح
دوست عزیز ، شما نگفتید که از چه زبونی استفاده میکنید. من با وی بی در همه پروژه هام استفاده میکنم و مشکلی هم پیش نیومده . البته من با وی بی کار میکنم
سلام
من با #C کار میکنم چه راه حلی پیشنهاد میدید؟

Hossein Bazyan
جمعه 02 آبان 1393, 10:23 صبح
سلام
من با #C کار میکنم چه راه حلی پیشنهاد میدید؟
سلام


http://msdn.microsoft.com/en-us/library/cc668201(v=vs.100).aspx

neda555
جمعه 02 آبان 1393, 14:24 عصر
سوال من که واضح و سادست چرا کسی جواب نمیده؟!لطفا راهنمایی کنید

uthman
جمعه 02 آبان 1393, 14:36 عصر
این (http://www.hozhan.ir/statics/File/rOUTING-577ed9.rar)پروزه رو دانلود کن شاید به دردت بخوره

neda555
شنبه 07 شهریور 1394, 21:50 عصر
سلام
در من صفحم رو به این شکل تعریف کردم

route.MapPageRoute("ImgGallery", "ImgGallery/{id}/{title}", "~/Pages/ClinicImgGallery.aspx");
و id رو به شکل زیر از query string میگیرم ولی ارور میده


int id = int.Parse(Page.RouteData.Values["id"].ToString());

iamebadi
یک شنبه 08 شهریور 1394, 23:47 عصر
سلام دوست عزیز...
شرمنده که مزاحم شما شدم...
من یک مشکل در routing با استفاده از asp.net friendlyurls دارم ... مشکلم اینه که من طبق دستور زیر یک پیج به نام showsite.aspx رو Routing کردم با دستور زیر

routes.MapPageRoute("Site", "Site/{Site}", "~/showsite.aspx");

که درست انجام می شه وآدرس صفحه (showsite.aspx) به شکل زیر در می آید که درسته :
http://localhost:1083/Site/پیامک-تبلیغاتی-سامانه-پیام-کوتاه

اما متاسفانه کلیه لینکهای دیگه صفحه که در مسترپیج هست بهم میریزه مثلا آدرس صفحه اصلی ام که http://localhost:1083/default باید باشه یک کلمه Site بهش اضافه می کنه و میشه http://localhost:1083/Site/default که عبارت Site روتینگ صفحه (showsite.aspx) می باشد که در قسمت بالا تنظیم کردم...

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

mehdi.mj
پنج شنبه 12 شهریور 1394, 22:41 عصر
http://www.codeproject.com/Articles/77199/URL-Routing-with-ASP-NET

mehdi.mj
پنج شنبه 12 شهریور 1394, 22:44 عصر
http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/step-by-step-walk-through-on-url-routing-in-Asp-Net-4-0/

sg.programmer
یک شنبه 19 دی 1395, 19:53 عصر
سلام صفحه Global.asax.cs در برنامه ام قرار ندارد چطوری باید اضافه اش کنم؟ ولی صفحه Global.asax در برنامه قرار دارد .