1

我已经按照 Erik Reitan 撰写的关于 ASP.NET 4.5 WebForms的 URL 路由的教程进行了操作,并且在那篇文章中明确了 URL 路由的优点。

我看到的一个缺点是必须为我想要查询数据库的每种方式编写新的查询。

例如,要实现按产品 ID 进行搜索,我必须执行以下操作:

使用标准机制,链接是:

<a href="ProductDetail.aspx?productID=<%#:Item.ProductID%>">

实现 URL 路由

  1. 在应用程序启动时注册路由

    void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute(
                "ProductByNameRoute",
                "Product/{productName}",
                "~/ProductDetails.aspx"
            );
        }
    
  2. 修改 ProductList.aspx 标记:

     <a href="<%#: GetRouteUrl("ProductByNameRoute", new {productName = Item.ProductName}) %>"
       <%#:Item.ProductName%>
     </a>
    
  3. 修改代码隐藏(ProductList.aspx.cs):

    public IQueryable<Product> GetProduct(
                        [QueryString("ProductID")] int? productId,
                        [RouteData] string productName)
        {
            var _db = new WingtipToys.Models.ProductContext();
            IQueryable<Product> query = _db.Products;
            if (productId.HasValue && productId > 0)
            {
                query = query.Where(p => p.ProductID == productId);
            }
            else if (!String.IsNullOrEmpty(productName))
            {
                query = query.Where(p =>
                          String.Compare(p.ProductName, productName) == 0);
            }
            else
            {
                query = null;
            }
            return query;
        }
    

如果我想通过 查询ProductName,我现在必须编写一个新查询。

如何解决必须为我想要查询产品的每种方式编写新查询的问题?

4

0 回答 0