我是在三层架构上犯一个datetime转换为string的错误的,有木有高手帮忙解释,或另劈巧径

看图就可以看到 model.BirthDay =Convert.ToDateTime(txtBirthday.Text);
我已经做的转换但是为什么会发生这种方法;本来我是在插入数据是用这种方法的正确,但是我在想更新数据库里面的数据时候又发生上面的问题,原因是什么啊,我看堆栈发现根本连值都没有传入,但是当我在更新某行数据的时候,我用另外一种方法的时候像强制转换的时候model.BirthDay = DateTime.Parse(txtBirthday.Text);值是传入来了,但是我发现它还是发生上面的问题,请求大虾给个方法解决,初学

第1个回答  2012-11-16
如果知道参数类型是int型的,最好在获取的时候强转成int型,这样既可以防注入,也可以减少程序出错几率。string型后面+int型,int型会自动转为string型的。像birthday这样的数据,最好设置为date型,前台给一个日历控件,用来获取,入库或更新的时候,可以传字符串进去,数据库中会自动转换(用日历控件获得的日期字符串是标准的,因此通常情况下是可以转换成功的),转换不成功才会报错。

还有一点建议:最好不要在方法调用的实参是使用其他函数,这样可读性不好,不利维护。本回答被网友采纳
第2个回答  2012-11-16
排错提示只是给你一个提醒,不一定是你的datetime类型转换出错,从图上看很大可能是int.parse(id)这个出错了,确认下id是否有具体值和值类型是否能转为int的追问

id就是一个自增变量,是一个主键,好像跟踪它,发现是数据库里面是一个int类型,但是在这里是一个string,那么强制转换是在哪个个位置转啊,这行代码就是获取的是某行数据的啊,比如获取第20行数据,我要更新它,它在上一网页插入网页获得这行数据的id,怎么在下一网页更新这一行数据呢,我就是用上面这string id = Request.QueryString["id"] + "";//从URL参数中获取Id,但是读取数据库里面的id是int,在网页上显示就string为什

追答

请确认你接受的id对用的数据在数据库中有这条记录吗?
有的话,确认给Txl负值时的类型转换跟数据库中这条记录对比下。。就知道错在哪里

第3个回答  2012-11-16
建议
1:断点跟踪看看int.Parse(id)这句话是否有问题
2:枚举类型是值类型 不是引用类型 别搞错了 这个是不可逆向的 你可以读它但是改不了
第4个回答  2012-11-16
在你的string id=Request.QuestString["id"]+"";
下面加一句
if(string.IsNullOrWhiteSpace(id))
{
id="1";
}
如果不报这个错了,就说明是值没有传进来。
去传值的地方找错。追问

private Model.Txl GetModel()
{ string id = Request.QueryString["id"] + "";
return bll.GetModel(int.Parse(id));//根据Id从数据库获取该记录//不好意思这漏了
return null; }
if (string.IsNullOrWhiteSpace(id))
{ id = "1"; }
//string.IsNullOrWhiteSpace(id))这个是假如它是空值么?是试着去传参数1进去么

追答

对。
但是
if (string.IsNullOrWhiteSpace(id))
{ id = "1"; }
要放在

return bll.GetModel(int.Parse(id));//根据Id从数据库获取该记录

这句的前面

追问

我想说的是我这个id是一个自增的id来的通过三层架构插入,更新,删除数据。但是这id在model有定义到,但是我插入数据库的时候是无插入自增编号即是id的目的,我是直接在网页上
'>编辑 '>删除 //传过来这个参值的是么,insert.aspx是插入Edit.aspx是更新,跨页传id

第5个回答  2012-11-16
不那个参数id是什么类型啊,会不会是Int型的,你传入的是一个string类型。追问

对,就是一个自增变量,是一个主键,好像跟踪它,发现是数据库里面是一个int类型,但是在这里是一个string,那么强制转换是在哪个个位置转啊,这行代码就是获取的是某行数据的啊,比如获取第20行数据,我要更新它,它在上一网页插入网页获得这行数据的id,怎么在下一网页更新这一行数据呢,我就是用上面这string id = Request.QueryString["id"] + "";//从URL参数中获取Id,但是读取数据库里面的id是int,在网页上显示就string为什

相似回答
大家正在搜