软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > 网络编程 > ASP.NET > ASP.NET:就是喜欢Web Form 就是喜欢拖控件(二)

ASP.NET:就是喜欢Web Form 就是喜欢拖控件(二)

这一篇...... 拖了太久了 原来打算叫FormView使用技巧 后来觉得内容其实不全是FormView相关,就改成了现在这个名字。在这个ASP.NET MVC流行的时候算是一种反抗?

第一篇实在太基础,也没好意思发上首页,大家可以到此处看看:ASP.NET:就是喜欢Web Form,就是喜欢拖控件(一)

咱们言归正传,书接上回,上一篇演示了如何利用VS自动生成要提交的表单。这里我们来考虑一个比较复杂的情况,带上传图片的表单以及在WebForm中显示数据库里保存的图片。

回忆一下这个数据库表:

commodity 商品

id name company_id
1 包子 3
2 蒸饺 3
3 人才 1
4 MVP 1
5 Window 7 2

既然是商品,每种商品配张图片是再正常不过的事情了,对于类似的需求,很多人喜欢把图片存到一起,然后用一个GUID作为文件名,数据库里存图片文件的GUID。然而随之而来的增、删、改、查备份都变得异常困难,这也太麻烦了!有没有更好的方法呢?

其实大部分数据库都是有Image这个字段类型的,我们完全可以把图片存入数据库中。我们期望的表结构是这样的:

id name company_id image
1 包子 3 [bin]
2 蒸饺 3 [bin]
3 人才 1 [bin]
4 MVP 1 [bin]
5 Window 7 2 [bin]

建表截图:

image

我们按照上一篇的方法,从这个数据表建立一个FormView,并且将Default Mode 设置为Insert,结果如下图:

image

好了,我们自动生成了一个插入数据的表单,但是很遗憾,image字段生成了TextBox,指望用户把图片内容copy下来输入到文本框里显然是极其不现实的想法。我们希望通过上传的方式来提交图片,那么,我们来编辑Insert模板,改为使用上传控件。

这是TextBox的数据绑定方式,TextBox的Text被绑定到了image字段。

image

然而很遗憾,当我们放一个FileUpload在这里时,只出现了2个Bindable属性,即使选中Show all properties,也没有我们想要的属性。

image

无计可施了吗?当然不是!我们还可以直接改ASP.NET代码。找到相应的代码先:

image

然后把 FileBytes属性绑定到image字段就好了:

<asp:FileUpload ID="imageFileUpload" runat="server" FileBytes='<%# Bind("image") %>'/>

然后我们把程序运行起来看看,按照原计划插入一个新商品种类:包子。

image

点击运行,我们却得到一个错误:SQL变量类型与字段不匹配。

其实我们只要把数据源里面的image参数类型限制删掉就好了:

image

好了,做完之后,数据看起来可以正确插入了。

image

好了,我们现在已经成功地将图片存入了数据库,但是存的到底对不对还有待证实,况且把图片存起来容易,显示出来难。

相关阅读
网友评论
栏目导航
推荐软件