một số cách làm khác rất khó khăn và rất khó hình dung cho các bạn nên mình sẽ hướng dẫn một cách ASP.NET 4.0, Microsoft support cho các bạn 1 thư viện System.Web.Routing. So với kỹ thuật Rewrite URL, URL Routing cung cấp cho người lập trình những phương thức nhanh gọn an toàn để có thể ảo hóa một đường dẫn. Trong ASP.NET 4, URL Routing hỗ trợ cả 2 mô hình MVC và Web Forms. URL Routing trong ASP.NET 4 hỗ trợ đầy đủ các hình thức Postback trang. Một ví dụ điển hình là phương thức Click của một Button ASP.NET, theo đó, liên kết sẽ được giữ nguyên (ảo và cả physical) nếu như người sử dụng click vào nút. Điều này hỗ trợ nhiều (đặc biệt là về vấn đề bảo mật) cho người lập trình so với cách viết Rewrite URL.
http://www.example.com/products.aspx?id=123456
Nếu áp dụng kỹ thuật URL Routing, bạn sẽ được một đường dẫn ảo hóa:
http://www.example.com/products/123456
Thêm function này vào:
public static void RegisterRoutes(RouteCollection routes) {
routes.RouteExistingFiles = false;
routes.Add(new Route("{resource}.axd/{*pathInfo}",new StopRoutingHandler()));
routes.Add(new Route("{service}.asmx/{*pathInfo}",new StopRoutingHandler()));
routes.MapPageRoute("listproductpage", "product/{category}/{idproduct}", "~/Product.aspx");
Tham số thứ nhất listproductpage là tên đại diện cho 1 route. Tham số thứ 2 là đường dẫn ảo mà người lập trình muốn đặt, ở đây ví dụ là products/{category}, {category} là tham số tương ứng với ?category={category}. Tham số tiếp theo {idproduct} id của sản phẩm. ~/Product.aspx là trang tempate sản phẩm.
Khi đã dùng Web.Routing thì bạn cũng phải bắt buộc chỉnh URL của sản phẩm theo như thế này :
http://www.example.com/products/123456 hay /products/123456
Va trong trang sản phẩm bạn chỉ cần gọi viết như sau:
Lấy tham số {category} và {idproduct}
string getcategory = Page.RouteData.Values["category"].ToString();
string getidproduct = Page.RouteData.Values["category"].ToString();
Tới đây bạn có thể thoải mái xử lý rồi. Chúc bạn thành công.
No comments:
Post a Comment