0

Thực hiện webform với FriendlyURL

Gói Friendly Urls là sẵn có trong .Net Framework 4.0+. Cho nên nếu web bạn không ở phiên bản này trở nên thì hãy upgrade lên. Giả sử rằng bạn có một webforms mà không có FriendlyUrl và trang about trông như thế này.

about-page-vs-2010[13].png

Bước 1. Di chuyển đến Tools > Library Package Manager > Manage Nuget Packages dialog. Tìm kiếm 'Friendly' và cài gói ‘Microsoft ASP.NET Friendly URLs’ . NÓ sẽ cài đặt một vài thư viện cần thiết.

install-friendly-url-in-2010[7].png

Bước 2: Khi gói đã được cài đặt xong, mở trang Global.asax và thiết lập URL Routing bằng cách thêm những dòng sau vào sự kiện Application_Start.

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

Bước 3: Di chuyển tới App_Start\RouteConfig.cs. Nó đã được add khi bạn cài đặt gói FriendlyURL. THay đối 1 dòng code trong phương thức từ

routes.EnableFriendlyUrls()

Thành

routes.EnableFriendlyUrls(new FriendlyUrlSettings
{
AutoRedirectMode = RedirectMode.Permanent
}) ;

RedirectMode là một loại enum với 3 giá trị . Values - Off, Temporary và Permanent. Điều này liên quan đến làm thế nào hệ thống Routing trao yêu cầu mà có địa chỉ URL đầy đủ . Với thiết lập mặc định . RedirectMode thiết lập tới Of. Do đó khi trang .aspx được phát hiện . Aspx URL là được tự động phục vụ . Tuy vậy nếu bạn thiết lập tới RedicretMode là Permanent thậm chí nếu bạn gõ http://myapp/About.aspx thì chúng sẽ được chuyển hướng tới trang http://myapp/About/ với lỗi 301. Đây là một điều quan trọng trong các động cơ tìm kiếm bởi vì nó có thể cập nhật lại URL trong database.

Bước 4: Chạy chương trình

Bạn đã di chuyển tới trang mà không cần phần mở rộng . 301 chuyển hướng để có thể được thấy rõ ràng trong khung Network Cho nên chúng ta có thể thiết lập FriendlyURL và chúng làm việc tốt . Tiếp theo hãy xem làm thế nào truy vấn với các tham số trong Friendly URL. Nhớ ràng không có sự khác nhau giữa Project tạo ra trong VS 2010 với project 4.x tạo ra trong VS 2012. Nên tôi sẽ dùng một project 2012.

about-page-vs-2010-friendly-url[3].png

Truy vấn chuỗi tham số và Friendly URLs

Ta có trang Artical.aspx trong folder Blog và tiếp cận một đề tài . Bạn truyền articleID như một query string theo sau đây:

blog-page-with-friendly-url[6].png

Trong backend chúng ta thực hiện:

  1. Tách ID từ query String

  2. Truy vấn Service layer để có được đối tượng Domain

  3. Bind đối tượng Domain tới View và thiết lập view

protected void Page_Load(object sender, EventArgs e)
{
int id = Request.QueryString["id"] != null ? int.Parse(Request.QueryString["id"]) : -1;
if (id > 0)
{
  Model.Blog post = GetBlog(id);
  if (post != null)
  {
   title.Text = post.Title;
   postDetails.Text = post.Post;
   author.Text = post.Author;
  }
}
}

private static Model.Blog GetBlog(int id)
{
Model.Blog post = new Model.Blog
{
  Id = id,
  Author = "Author " + id.ToString(),
  Post = "Lotsa Lorem Ipsum. " + id.ToString(),
  Title = "Lorem Ipsum Title. " + id.ToString()
};
return post;
}

Cập nhật mã để trao FriendlyURL tham số

protected void Page_Load(object sender, EventArgs e)
{
int id = Request.QueryString["id"] != null ? int.Parse(Request.QueryString["id"]) : -1;
if (id < 0)
{
  IList<string> segments = Request.GetFriendlyUrlSegments();
  if (segments.Count > 0)
  {
   int.TryParse(segments[0], out id);
  }
}
if (id > 0)
{
  Model.Blog post = GetBlog(id);
  if (post != null)
  {
   title.Text = post.Title;
   postDetails.Text = post.Post;
   author.Text = post.Author;
  }
}
}

Đầu tiên kiểm tra xem có ID trong query string không. Sau đó nhìn vào FriendlyURLSegments bộ sưu tập và thử lấy ra từ đó. Với code này chúng ta gõ url 'http://localhost:55360/Blog/Article/23' và được show ra như sau :

blog-page-with-friendly-url[13].png

Nguồn: http://www.devcurry.com/2013/05/friendly-urls-in-aspnet-web-forms.html


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí