MVC3.0 开发过程中遇到错误及解决方案(不断更新中。。。)

刚刚看到一个博友在工作中问题总结,见贤思齐,打算从现在把遇到的错误及解决思路加以总结,不断累积。

001. 未将对象引用设置到对象的实例 ----最常见的问题,注意原因,数据绑定是出现空值情况,即:null,设上断点,耐心调试,加以跟踪。总之,遇到null 时,不要紧张,

               找到根源,多数是数据绑定的问题,有时候类型转换以及变量,数组重复定义导致。

002. 序列中不包含任何元素 和 序列包含一个以上的元素----第一个,在返回List集合时使用Single()与SingleOrDefault()导致,前者表示:满足指定条件的唯一元素,

               存在多个则引发异常;后者:返回唯一,不存 在返回默认值(不报错),若存在多个,则引发异常。第二个,一般是DB和数据过滤时所导致。

003.不能在已使用的实体上添加新实体----实例:自己登陆后,给他人赋予操作权限,此时从人员表中,查询出所有人员,其中把自己选择上,此时就引发此错误。总结:

             查询时,应该排除自己,只查询他人,这样添加时就不会出错。设上断点,跟踪即可发现此问题。

004. IEnumerable<T>与Ilist<T>使用混乱----前者只用于遍历,后者回的集合支持排序,索引,在添加和修改时也可以使用,但通常在添加和修改时返回类型为实体表。

                    两者在使用for循环遍历时,前者需.count(),后者.count即可。(for i=0;i<.count;i++)红色标志处,有时候我们只需要3笔,不鼓励写i<3,容易

                    引发:小于指定索引数。

005.指定的参数已超出有效值的范围。 参数名: skipCount----实例:修改DB中表的字段,但在Model中的dbml文件,没有更新(没有重拖),在新增和修改操作时,字段

                    不一致, 导致此错。总结:更新后及时完成一系列的操作。

006.ColorBox与ckeditor开窗时高度与宽度,在不同浏览器下显示混乱------首先调整好ColorBox的height,然后调整ckeditor的内边框的height,即:

                   

View Code
1 //CKEDITOR.replace('CONTENT'); //将textarea值传给编辑器
2 var editor = CKEDITOR.replace('CONTENT', { height:300 });

                  然后通过firefox (firebug)或者IE8 (F12) 进行调整即可

007.提交一个表单时,对至少一个表进行操作时,应选择提交xxxxviewModel,然后在controller中在声明所要添加表的实体,进行操作,不要忘记在xxxxviewModel中 

                  定义所添加表的实体。 因为在mvc3.0中一个view 只对应一个viewmodel。有有时候更改命名空间是无济于事的。

008. 使用ckeditor 显示内容提示:“文件格式未知,作为纯文本文件打开么?”----原因有两个:a.使用ck向DB里面存储时,查看存储内容是否还有成对且规范性的标签;b.如果

                页面还是用其他编辑器(如scienceWord),要检查一下加载页面的使用哪一个?相应的js文件是否包含在相应的代码域内。这两个错误我都碰到过。前者是我 

                手动更改DB导致,后者,页面加载是未区分好。

009.使用Json操作时,运行程序从浏览器缓存中加载数据-----我们不能调整浏览器缓存的设置,所有在调用Json方法前,应该阻止数据从缓存加载,所有一段经典代码出现了

              

Json Code
1 // 禁用缓存
2 $.ajaxSetup({ cache: false });
3
4 $.getJSON("/Controller/Action", { id: EmpID }, function (data)
5 {
6
7 }

010.使用NHibernate,向DB里面存储可以为空的时间字段时,引发sqltime 溢出,应该给时间赋默认时间:

Model Code
 1 /// <summary>
2 /// 修改日期
3 /// </summary>
4 private DateTime _TRSDATE = Convert.ToDateTime("1900-01-01");
5
6 /// <summary>
7 /// 修改日期
8 /// </summary>
9 public virtual DateTime TRSDATE
10 {
11 get
12 {
13 return _TRSDATE;
14 }
15 set
16 {
17 _TRSDATE = value;
18 }
19 }

总结:在使用NHibernate,如果DB里面为空的字段,应给赋值,否则无法完成新增、修改操作。

011.无法将datetable 类型转化成实体表(model),可以先转化在使用,即:

controller Code
 1 DataTable dt = HQLHelper.ExecuteDataSet(CommandType.Text, sqlcompany, null).Tables[0];
2
3 COMPANYNAME company = new COMPANYNAME();
4 if (dt.Rows.Count > 0)
5 {
6 company = new COMPANYNAME(){
7
8 COMNAMEID = (int)dt.Rows[0]["COMNAMEID"],
9 COMNAMECN = dt.Rows[0]["COMNAMECN"].ToString(),
10 CREATEDATE = (DateTime)dt.Rows[0]["CREATEDATE"]
11
12
13 };
14 }

012.在monorail框架中,出现“Error processing MonoRail   request ” ——此时的Action是没有View的,只是提交时调用的方法。应该写上取消视图,即:CancerView();

013.

原文地址:https://www.cnblogs.com/lei2007/p/2109900.html