本文讲述如何导入项目,怎样创建VS2003软件。这些内容都是我今天花花了一周的时间查阅资料并像IT精英学习出来的,中间可能有不少错误是我没有挑出的,欢迎大家指正。
而VS2003软件中,可以建立多个form,但根本就没有实际意义,因为你会发现,在客户端收到的代码中,依然只有当前活动的一个card定义,并且你会看到,生成的wml中,card是没有id这个属性的.因为它只能生成一个card,因此微软干脆把card的id这个属性也给抛弃了,害得我研究半天,怎么来设定card 的id,气愤!
而你在服务器定义的其它form跑哪里去了呢,它还是在服务器上,如果你当前的card中有跳转到其它card的代码,用户让它执行后,其实又让手机去连接了服务器,来获得另外一个card,因此微软的所谓支持多form,是把我们骗了,与wml制定多card的初衷完全不合.
既然这样如何解决呢,当然就只有不用asp.net的form跳转功能了,用手工输出wml的方式,向客户端发送多card的代码.这中间就要用到自定义控件,以字符串输出的方式来输出wml,并且要欺骗asp.net,让它输出多card.注意最终生成的结果要完全符合wml的标准才行.
感觉微软的移动web自适应功能,反而给开发者带来不便,并且自带的移动控件的兼容性能不能通过移动联通的要求,都很成问题.
听说VS2005是可以实现多card的输出,没用过,不知道情况如何。
有一个项目,是由VS2003软件转换到VS2005下的,这段时间学习了asp.net ajax,感觉还不错,就想着将其应用到部分页面,MS的东西用着就是简单,很快就完成,兴冲冲地就想看看成果,系统正常启动了,没有任何错误,谁知在我改变下拉列表的选项时,本来应该是UpdatePanel包含的那一块内容刷新,现在变成了整个页面都刷新了,也就是异步调用变成了同步调用。
这是什么原因呢?是我的程序有误,仔细对代码做了检查,并没有发现什么问题。或者是配置文件的问题,我和其它测试成功的项目配置文件比较,完全相同。
百思不得其解,但明白应该是转换时造成的遗留问题。这个问题困扰了我几天,在网上也没有找到答案,前天参加陈黎夫(Dflying Chen)《css禅意花园》新书见面会,也没有找到明确的答案。
将那个项目应用ajax的计划只好暂时放弃,但心中又有一些不甘,总想找到问题所在(完美主义者)。开始仔细比对vs2003软件和2005项目,终于发现资源文件AssemblyInfo.cs在vs2005下是没有的,2005下资源文件放在web.config中,但项目在转换后,仍然保留了这个文件,可能是考虑到有些特殊的配置信息存在,保留下来便于手工调整。
打开这个文件,除了版本外并没有写入其它什么东西,试着把它删除看看吧,没想到还真就是这儿的问题,局部刷新的终于效果出来了。
问题是解决了,但道理在哪儿呢?或许正如前面所述,转换工具特意保留了这个资源文件,在2.0的环境下,发现存在这个资源文件,就直接从这里读取信息,结果保存在web.config中的相关配置信息反而被忽略了,从而造成异步调用时无法找到相应的资源、ajax失效的情况。
当然,我的水平有限,以上原因只是猜测,希望高手指点迷津!