在前天我在我在做一个发布借款的一个功能,这个功能要传输很多字段到控制器,但我传过去的字段只接受了一两个,因为我一开始对页面数据的传输的理解还不够明白。
我传输的时候只考虑到,字段名称要相同,从没考虑到数据类型的问题。然或我就在哪找了半天都没找到。
一开始我给他设置的数据类型是int(上面的截图是我改过的),我们看到应还本金、应还利息、应还总金额,这三个字段,我们都知道他们是用Decimal这个字段的,这个当然是对的。
为什么不用int呢,因为这三个字段会有小数点,所以不能用int这个字段。 int是一个整数类型。
我的错误出现在视图哪里,
我给他调用了toFixed()这个方法。
toFixed(n)这个方法可以把3.14586514566这种数字,让他只保留后面的n位小数。
但这个方法会把数据类型转为string类型。
这就是问题的所在,如果你传给控制器的数据的数据类型为string,但你控制器那边接受数据的数据类型为int,那控制器那边接受的数据会变为0。
这就是我在控制器那边用string来接受数据的原因。
我们接收到string类型的数据,但保存到数据库,要保存的数据是Decimal,所有我在保存到数据库之前还要进行一次数据类型的转换。
代码如下:
用的是Convert.ToDecimeal这个方法,这样就可以把数据从string转为Decimal类型。
总结:页面传输要注意的问题
- 字段名称要相同,如果不相同通常会报500的错误。
- 数据类型要相同,要不会接收不到对应的数据。
这个是我对页面数据传输的理解,有什么不正确的请指出。