zoukankan      html  css  js  c++  java
  • MonoRail&ActiveRecord开发中的注意事项

            初学.net,经常在园子里潜水,聆听前辈们的指点教化,学.net是为了开发一个项目,仔细考虑一番后,决定使用castle的MR来做为开发框架,原因很简单,WebForm中各种各样的服务器控件搞得头晕脑涨,PostBack的模型让俺不知道程序到底在执行了什么,觉得还是使用简单的MVC模型更适合利用旧的WEB常识来完成这件工作,新的东西学起来费劲,于是选择了MR。
          由于是边学边开发,经常遇到一些问题,google一下,多数问题能从园子里找到答案,但也有些低级的问题始终找不到,因此想在这里记下对这些问题的处理,很零散,不是系统讲解。
          1、Nvelocity模板中取到空值时,会直接输出模板的内容,如$row.Email,如果Email为null,输出为$row.Email,一直使用#if($row.Email) $row.Email #end这种方法来处理,后来发现原来可以使用$!Row.Email这种语法,注意,是在$后加一个感叹号,这样在内容为空时,就不输出内容了。
          2、模板中可以直接使用.Net的类库及类的方法,如,要在页面中显示一个当前时间,可以直接写$DateTime.Now,就会显示当前的时间。
          3、输出乱码。有很多人介绍使用模板的属性文件,我反复试验,仍然乱码,最后发现其实根本不是这个原因,NVelocity是可以正常输出汉字的,只要编码是UTF8即可,不需要使用模板的初始化属性文件。我碰到的问题是由于模板、layouts两个文件的编码方式不致造成的,.net的默认编码是utf-8,只要所有文件的保存格式都统一为utf-8,并且去掉关于游览器页面语言控制的代码,就可以保证输出不乱码了。而网上下载的例子Layouts中文件的默认编码不是UTF8。
         4、在#foreach输出的表格中增加序号列。#foreach有一个计数变量,名字叫$velocityCount,只要输出为个变量就可以了。
         5、输出斑马线型表格,即隔行变色。使用如下代码就可以简单实现了
    #foreach($item in $items) 
       <tr class="#if($velocityCount % 2 == 0) css1 #else css2 #end"
    >
          <td>列一</td>
          <td>列二</td> 
       </tr>
     
    #end
     
          6、控制器自动绑定参数问题
          MR的SmartController可以自动把客户端提交的参数绑定到控制器的方法参数上,唯一的要求是名称相同。但这也带来了一些问题。首先客户端提交的数据会来源于以下几个方面:Cookies、Form、QueryString、Header等。如果这几个来源的变量定名重名,会绑定哪个来源的参数呢?我发现如果Cookies和Form中的变量重名时,会自动把两个参数组合成一个数组来进行绑定,因此有可能会出现绑定错误,其它情况没有测试,所以建议仔细考虑Cookies中的变量名称,不要和Form中的变量重名,否则出现问题很难测试发现。
          随时发现的问题会及时补充上
          希望与各位前辈们交流学习
  • 相关阅读:
    HDU 1114 Piggy-Bank
    HDU 2955 Robberies
    NTOJ 290 动物统计(加强版)
    POJ 3624 Charm Bracelet
    HDU 2602 Bone Collector
    POJ 1523 SPF(无向图割顶)
    HDU 5311 Hidden String
    HDU 1421 搬寝室
    HDU 1058 Humble Numbers
    POJ 3259 Wormholes(spfa判负环)
  • 原文地址:https://www.cnblogs.com/inhesoft/p/1096086.html
Copyright © 2011-2022 走看看