مسیریابی آدرس در ASP.NET 4


داشتن یک آدرس تمیز و قابل فهم برای کاربران و موتورهای جستجو، یکی از امکاناتی است که این روز ها درباره آن بحث زیادی میشود. این امکان در ASP.NET 3.5 SP1 برای برنامه نویسان ASP.NET نیز به وجود آمد.
امروز با یک مثال نحوه استفاده از این امکان را در برنامه های WebForms به شما نشان میدهم.
در اصلی URL Routing استفاده از یک آدرس قابل فهم است که فایل معادل فیزیکی آن وجود ندارد. و شما در برنامه خود این آدرس را به یک فایل فیزیکی متصل میکنید.
در طول این مثال فرض ما بر این است که سایتی با 2 صفحه وجود دارد.صفحه اصلی و صفحه نمایش یک مقاله با نام های Default.aspx و Detail.aspx که تا امروز برای ارسال شناسه مقاله ها به این صفحه از یک کوئری استرینگ به نام ID استفاه میشده است. و آدرس آن به شکل زیر بوده
www.mysite.ir/Detail.aspx ?ID=22
حال میخاهیم این آدرس را به شکل زیر تبدیل کنیم
www.mysite.ir/viewarticle/22
قدم اول:
اولین کار ایجاد مسیر مجازی و اتصال آن به مسیر فیزیکی است. نمونه این کار را درمثال پایین مشاهده میکنید. این کار به کمک تابع RegisterRoutes انجام میشود که در Application_Start فراخوانده میشود.

void Application_Start(object sender, EventArgs e) 
{
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routs)
{
routs.MapPageRoute("article-browser", "viewarticle/{ID}",
"~/Detail.aspx");
}
در این تابع از تابع کمکی MapPageRoute استفاده میکنیم که سه پارامتر دارد. اولین پارامتر یک نام برای مسیر ما است. پارامتر دوم مسیر مورد نظر ما میباشد که به صورت یک فرمت میباشد و میتوانیم چندین محل را در آن تعبیه کنیم و بعدا با پارامتر هایی این محل ها را پر کنیم. و در نهایت سومین مسیر آدرس فیزیکی مورد نظر ما است.
قدم دوم:
دومین قدم ایجاد یک لینک است از صفحه دوم به این صفحه که لینک به شکل زیر میشود.
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/viewarticle/22" Text="عنوان مقاله">asp:HyperLink>
که میتونید این لینک رو در یک Repeater ایجاد کنید و عدد رو از ID که از دیتابیس خوانده شده به دست آورید.


قدم سوم:
در صورتی که پارامتری به ای صفحه ارسال کنیم میتوانیم این پارامتر را به شکل زیر بخوانیم.


protected void Page_Load(object sender, EventArgs e)
{
string articleId = Page.RouteData.Values["ID"] as string;
}
برداشتی آزاد از مقاله عمو اسکات

0 نظرات: