Infoview的功能是把微软infoPath表单转换成aspx表单,功能简单实用。
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/logo.gif)
安装之后打开http://localhost/InfoView/ 来试用。
一:上传xsn文件。
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/upload.gif)
二:开始转换,提示转换成功。
三:浏览,填写提交表单了。
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/view.gif)
是否感觉挺不可思议的?
我大致看了一下它的实现方式。
第一步上传过程中把infoPath解包,然后用字符串替换的方法把infopath里出现的表单元素:
plaintext等替换成网页用的表单元素,替换过程中加上infoview的一些标识,和数据验证等,供以后数据处理使用。
例:infopath中的文本框类型PlainText被替换成下面的形式。
<INPUT id=InfoView_ID26 onclick="InfoView_OnClick(this, 'InfoViewForm1');" onchange="InfoView_UpdateXMLField(this, 'InfoViewForm1');" xd:infoViewID="ID26" xd:binding="ID26" xd:xctname="PlainText" xd:CtrlId="submittedByEmailAddressPrimary_1">
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/logo.gif)
安装之后打开http://localhost/InfoView/ 来试用。
一:上传xsn文件。
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/upload.gif)
二:开始转换,提示转换成功。
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/success.gif)
三:浏览,填写提交表单了。
![](https://cquaker.cnblogs.com/images/cnblogs_com/cquaker/view.gif)
是否感觉挺不可思议的?
我大致看了一下它的实现方式。
第一步上传过程中把infoPath解包,然后用字符串替换的方法把infopath里出现的表单元素:
plaintext等替换成网页用的表单元素,替换过程中加上infoview的一些标识,和数据验证等,供以后数据处理使用。
例:infopath中的文本框类型PlainText被替换成下面的形式。
![](https://cquaker.cnblogs.com/Images/OutliningIndicators/None.gif)
注意看上面的onchange="InfoView_UpdateXMLField(this, 'InfoViewForm1'),此处功能是在表单项改变时时时更新网页里的xml数据岛。
替换之后生成aspx文件,生成的表单元素都是客户端控件<input ...,而不是大家所期望的<asp:TextBox>这样的服务器端控件.
之后所有的数据操作都是用javascript结合xml数据岛完成的.(注意看下图的三个xml数据岛)
填写的数据提交到什么地方?答案是xml文件。
总体看来,Infoview基本上实现了从infopath到aspx的转换,不过Infoview不能定义表单提交后的处理,提交后
生成的是xml文件,如果你要指定数据提交到数据库,这个转换需要自己动手去实现.