MVC开发过程中遇到的一个有关问题怎么解决

 我来答
千锋教育
2016-07-11 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
  没有说明清楚问题,不过我原来收集过常出现的问题和解决方案,一并帖上,你先看看你是什么情况:
  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,即:
  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方法前,应该阻止数据从缓存加载,所有一段经典代码出现了
  // 禁用缓存
  $.ajaxSetup({ cache: false });
  $.getJSON("/Controller/Action", { id: EmpID }, function (data) { }
  010.使用NHibernate,向DB里面存储可以为空的时间字段时,引发sqltime 溢出,应该给时间赋默认时间:
  Model Code
  /// <summary>
  /// 修改日期
  /// </summary>
  private DateTime _TRSDATE = Convert.ToDateTime("1900-01-01");

  /// <summary>
  /// 修改日期
  /// </summary>
  public virtual DateTime TRSDATE
  {
  get
  {
  return _TRSDATE;
  }
  set
  {
  _TRSDATE = value;
  }
  }
  总结:在使用NHibernate,如果DB里面为空的字段,应给赋值,否则无法完成新增、修改操作。

  011.无法将datetable 类型转化成实体表(model),可以先转化在使用,即:
  controller Code
  DataTable dt = HQLHelper.ExecuteDataSet(CommandType.Text, sqlcompany, null).Tables[0];

  COMPANYNAME company = new COMPANYNAME();
  if (dt.Rows.Count > 0)
  {
  company = new COMPANYNAME(){
  
  COMNAMEID = (int)dt.Rows[0]["COMNAMEID"],
  COMNAMECN = dt.Rows[0]["COMNAMECN"].ToString(),
  CREATEDATE = (DateTime)dt.Rows[0]["CREATEDATE"]
  
  
  };
  }
  012.在monorail框架中,出现“Error processing MonoRail request ” ——此时的Action是没有View的,只是提交时调用的方法。应该写上取消视图,即:CancerView();
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式