首页 新闻 会员 周边 捐助

关于.NET 4.0 UrlRouting的问题

0
[已解决问题] 解决于 2013-02-15 20:37

我尽量说得详细一点。

有一个需要分页的产品分类表

希望能达到如下的URL路径,

/category/1

/category/1/1

/category/1/2

/category/1/3

/category/1/4

/category/1/5

其中前面的1是分类ID,后面的数字是第几页。

所以我定义了二个分类的路由,一个带分页参数,一个不带。

不带参数的如下:

//不带分页的分类路由
            routes.MapPageRoute("category",
                "category/{cid}",
                "~/category.aspx", true, null, new RouteValueDictionary(new { cid = "\\d+" }));

带参数的如下:

//带分页的分类页路由
            routes.MapPageRoute("categoryPage",
                "category/{cid}/{page}",
                "~/category.aspx", true, null, new RouteValueDictionary(new { cid = "\\d+", page = "\\d+" }));

 

Category.aspx.cs后台代码:

public List<SoftMODEL> GetPageList()
        {
            int pageIndex=1; 
            int pageSize=10;
            string obj = RouteData.Values["page"] as string;
            if (string.IsNullOrWhiteSpace(obj.ToString()))
            {
                pageIndex = 1;
            }
            else
            {

                pageIndex = Convert.ToInt32(obj);
            }
            return new BLL.SoftBLL().GetPageList(pageIndex, pageSize);
        }


前台:

<%
                    IEnumerable<Ws2008.MODEL.SoftMODEL> model = GetPageList();
                    foreach (Ws2008.MODEL.SoftMODEL m in model)
                    {%>
                <li>
                    <a title="<%=m.Title %>" href="<%=GetRouteUrl("view",new{id=m.SoftID}) %>" class="pic">
                        <img width="140" height="98" src="/images/deep.jpg" alt="淘宝商城多格jQuery焦点图" /></a>
                    <h2><a href="<%=GetRouteUrl("view",new{id=m.SoftID}) %>" title="note"><%=m.Title %></a></h2>
                    <div class="info">
                        <span class="time"><%=m.AddDate %></span>
                    </div>
                    <div class="note"><%=m.Description %></div>
                </li>
                <%} %>


现在产生的问题就是在访问

/category/1/1

/category/1/2

/category/1/3

/category/1/4

/category/1/5时都正常,都能正确获取到数据。

但是在访问/category/1时报错,因为page参数null.

 

所以这里的参数应该怎么判断?我的想法是如果没有参数就让他赋值1,让他显示第一页内容。

 

目前我已经暂时解决了,用三元表达式。不知道大家还有没有更好的解决方案。

欢迎大家继续讨论,或者有更好的路由方案,二条路由能不能并成一条等。

DZCMS的主页 DZCMS | 初学一级 | 园豆:5
提问于:2013-02-14 23:47
< >
分享
最佳答案
0

obj.ToString() 有问题, 当 obj = null , ToString() 就会出错的了

奖励园豆:5
Yu | 专家六级 |园豆:12990 | 2013-02-15 09:26

恩。

总算从死思路里走出来了。

我一直是直接用string 来接收参数,所以造成这个问题。

这里先用object接收,先判断这个obj就好办了。

DZCMS | 园豆:5 (初学一级) | 2013-02-15 12:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册