zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    静水流深,沧笙踏歌
    iOS 进阶 第二十二天(0603)
    iOS 进阶 第二十一天(0531)
    iOS 进阶 第二十天(0520)
    iOS 进阶 第十九天(0423)
    iOS 进阶 第十八天(0423)
    iOS 进阶 第十七天(0420)
    iOS 进阶 第十六天(0419)
    iOS 进阶 第十五天(0417)
    iOS 进阶 第十四天(0416)
  • 原文地址:https://www.cnblogs.com/lei2007/p/2109900.html
Copyright © 2011-2022 走看看