留言簿

我要留言
留言搜索

2013-01-09 16:51  bruce

杨老师,您写的 MVCPager 我发现一个问题,也不知道是不是 Bug。

var modelResult = new PagedList<Product>(data, pageIndex, 10, recordCount);

上面的代码,当 data 里面的 Count=0,而 recordCount 不为 0 时,就会报:索引超出范围,这种情况是很常见的,比如用户手动在 Url 上输入一个任意大的 pageIndex 时(http://localhost:1661/Product/Index/100000000),就会出现这个问题。我是第一次上来提问,请一定要回复哈,谢谢了!
回复:您好,您说的这个PagedList构造函数第一个参数是当前页数据,不是总的数据,所以Count为0没有任何影响,这应该是您代码中其它引用这个数据的地方没有处理好而出错的吧?您可以看看MvcPager的标准url分页示例,即使手工输入一个超出总页数的页索引,也不会出现错误,而是默认显示最后一页数据。谢谢!

2013-01-08 15:52  Leason

您好!
我的原来的连接时被重定向的,然后点击第二页的时候,连接变成了原始链接加本页名称再加page=2,这样就找不到资源,请问这个问题怎么解决。
回复:您好,很抱歉,我没看懂您的问题,另外您也没说您用哪个控件,所以无法帮上您。谢谢!

2013-01-07 08:50  tiaru

杨老师,向您问一个题外的,关于MVC Area,按自动生成的代码,Area可以执行,但RouteData.Values["area"] 为空,我怎么取得RouteData.Values["area"] ="Admin"?
http://social.msdn.microsoft.com/Forums/zh-CN/295/thread/32b9e75f-6771-4e32-948b-ecf9dd3e0dc6
,请您看看。
回复:在View中获取Area名可以这样:ViewContext.RouteData.DataTokens["area"]。谢谢!

2013-01-06 20:54  tiaru

杨老师,如果我在Helper里重载一个MvcCaptcha接收Area,另外复制一个_MvcCaptchaController到Area/Admin/Controller里,是可以取得出验证码。
不过,想问您有没有更好的方法可以解决。
回复:您好,这是您area路由定义有问题吧,我就在area中使用MvcCaptcha,从来没有任何问题,我不理解您把area名在路由中设为参数做什么?谢谢!

2013-01-06 20:12  tiaru

杨老师您好,还是今天早上那个问题,
Area中AdminAreaRegistration.cs文件
context.MapRoute(
                "Admin_default",
                "{area}/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional },
                new string[] { "ClansSystem.Areas.Admin.Controllers" }
            );
这种情况下可以获取area名为Admin,但是验证码无法加载,出现之前那个错误。
把"{area}/{controller}/{action}/{id}"改为"Admin/{controller}/{action}/{id}"则area为空,但是可以加载验证码。

而且我试着获取Session值成功,请问这个怎么解决?
回复:您好,Area名就是当前文件夹名,这个是固定的,我不太题解您在路由表中把它设为参数干什么?我从没这么用过,我的路由定义就是您后面说的那种。谢谢!

2013-01-06 12:11  tiaru

杨老师您好:
刚才那个错误我已查明,是Area的关系。

2013-01-06 11:37  tiaru

杨老师,您好:
之前调试好了,今天出现这个错误,
无法找到资源
_MvcCaptcha/MvcCaptchaLoader?null
回复:您是不是把Session禁用了?请检查。谢谢!

2013-01-03 17:13  魏水平

navigation.NavName = NavName;
            navigation.Introduce = Introduce;
            navigation.RoutingUrl = RoutingUrl;
            navigation.NavigationPic = NavigationPic;
            navigation.Sequence = Convert.ToInt32(Sequence);
            navigation.Published = Convert.ToByte(Published);

            navigation.CreateDate = DateTime.Now;
            NetCMS.cms_navigation model = dataContext.cms_navigation.FirstOrDefault(e => e.ID == navigation.ID);
            model = navigation;
            //UpdateModel(model, Request.Form.AllKeys);
            //dataContext.cms_navigation.InsertOnSubmit(navigation);
            dataContext.SubmitChanges();

这里为什么不能更新修改 我是自己一个一个对应到模型里去的
回复:您好,model = navigation这样的方式并没有将navigation对象的所有属性赋值给model对象,您可以测试一下,您需要用AutoMapper这样的工具或者手工对每个属性赋值。谢谢!

2012-12-30 02:39  tiaru

你好!在MVC4下使用出现这样一个错误,请指教。
System.Web.Mvc.HtmlHelper<dynamic>”没有名为“Pager”的适用方法,但似乎有一个具有该名称的扩展方法。扩展方法不能进行动态调度。请考虑强制转换动态参数,或调用该扩展方法但不使用扩展方法语法。
回复:您好,Pager扩展方法的第一个参数必须是实现IPagedList接口的对象,不能使用dynamic对象,请参考帮助和示例。谢谢!

2012-12-28 14:37  胡谦

老师,您好!为什么用了GoToPage(2)方法,控件的数据显示是对的,但是AspNetPager显示的页码还是在第一页,这个问题该怎么解决?谢谢!
回复:您好,这个方法在url分页方式下没有作用,url分页方式下跳转到指定页需要直接打开该页面对应的url地址。谢谢!
;