MVC开发过程中遇到的一个有关问题怎么解决
1个回答
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();
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();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询