内乡网站建设,网站公告模板代码,外贸公司介绍范文,网站建设php文件html文件Mono提供很多组件可以方便的处理页面#xff1a;可以自动将后台的值填充到页面#xff0c;可以自动进行Javascript验证#xff0c;可以自动在后台验证等。这些功能都是比较实用的#xff0c;可以减少很多开发 FormHelper是用来对应html页面中Form内的tag的#xff0c;可以… Mono提供很多组件可以方便的处理页面可以自动将后台的值填充到页面可以自动进行Javascript验证可以自动在后台验证等。这些功能都是比较实用的可以减少很多开发 FormHelper是用来对应html页面中Form内的tag的可以自动填充textbox等 ValidationHelper可以帮助我们在前台利用Javascript验证 Castle.Components.Validator组件可以在后台对页面输入值进行验证一、自动填充页面普通填充HomeController public void Fill1() { PropertyBag.Add(id, 1); PropertyBag.Add(name, GSpring); PropertyBag.Add(sex, 1); } Fill1.vm: form id:$FormHelper.TextField(id)br /name:$FormHelper.TextField(name)br /sex male:$FormHelper.RadioField(sex, 1) female:$FormHelper.RadioField(sex, 0)/form 当我们执行http://****/home/Fill1.rails时会自动将对应的值绑定到页面中去页面结果为我这里只是实验了常用的textbox和radiobutton其他的也是同样处理的高级填充 public void Index(){ PropertyBag.Add(list, new string[] { value 1, value 2 } ); PropertyBag.Add(contacts, new Contact[] { new Contact(john, address 1, phone number 1), new Contact(mary, address 2, phone number 2) } );} Vm代码 form actionSave.rails methodpost$FormHelper.TextField(list[0])$FormHelper.TextField(list[1])$FormHelper.TextField(contacts[0].name)$FormHelper.TextField(contacts[0].address)$FormHelper.TextField(contacts[0].phone)$FormHelper.TextField(contacts[1].name)$FormHelper.TextField(contacts[1].address)$FormHelper.TextField(contacts[1].phone)/form 可以自动将对象、数组中对应的值填充到页面上去二、前台验证1、 只能输入数字的限制 只需要在Vm中写: $FormHelper.InstallScripts() $FormHelper.NumberField(age) $FormHelper.NumberField(amount, %{exceptions32,forbid48,49}) 第一句是注册脚本第二句是生成一个textbox并且只能输入数字 第三句是生成一个textbox并且只能输入数字同时可以输入code32的字符同时不能输入code48或49的字符2、ValidationHelper验证功能很强大我这里只是列出一些简单的使用使用这种方式时几乎不需要后台代码只需要在vm文件中定义就可以了 html head titleValidation Test/title $ValidationHelper.InstallScripts() $ValidationHelper.SetSubmitOptions(true, true, false, 0) /head body form methodpost iddemoForm onsubmit$ValidationHelper.GetValidationTriggerFunction() 姓名input typetext nameName idName displayName姓名 validatorsblank /br / 密码input typepassword namePassword idPassword validatorslength|6 /br / 邮件input typetext nameEmail idEmail validatorsemail|3 /br / 确认邮件input typetext nameEmail_Confirm idEmail_Confirm validatorsequalto|Email /br / input typesubmit nameSubmit value测试 / /form /body/html 开始的$ValidationHelper.InstallScripts()和$ValidationHelper.SetSubmitOptions(true, true, false, 0)两句话是注册脚本的不能少然后主要就是validators属性设置的值了比如blank(不能为空)、length|6(六位长度)、email(邮件类型)等在这个例子中当什么也不输直接点测试时会弹出一个对话框报错Please enter 姓名这里显示的都是英文的报错信息如果需要使用中文报错可以使用以下方法(由于目前MonoRail没有提供简体中文的报错需要我们自己生成)复制MonoRail\Castle.MonoRail.Framework\Controllers目录下的ValidationLang.resx文件改名为ValidationLang.zh-cn.resx然后将此文件中对应的英文提示改为中文比如 fvalidate.i18n { // Validation errors errors: { blank: [ [请输入, 0] ], 将框架项目重新编译然后将vm中的第四条语句改成$ValidationHelper.InstallScripts(zh-cn)这样当再次照上面的步骤执行时会弹出一个对话框报错请输入姓名三、Castle.Components.Validator后台验证使用ValidatorController.cs代码 public class User { private int id; private string name, email, password, confirmation; public User() { } public User(string name, string email) { this.name name; this.email email; } public int Id { get { return id; } set { id value; } } [ValidateNonEmpty] public string Name { get { return name; } set { name value; } } [ValidateNonEmpty, ValidateEmail] public string Email { get { return email; } set { email value; } } [ValidateNonEmpty] public string Password { get { return password; } set { password value; } } [ValidateSameAs(Password)] public string Confirmation { get { return confirmation; } set { confirmation value; } } } public class ValidatorController : SmartDispatcherController { public ValidatorController() { } public void Index() { } public void Test([DataBind(user, Validate true)] User user) { if (HasValidationError(user)) { Flash[user] user; Flash[summary] GetErrorSummary(user); RedirectToReferrer(); } else { //其他操作 CancelView(); } } } 最主要的就是User中每个字段上定义的属性比如ValidateNonEmpty(不能为空)、ValidateEmail(邮件格式)、ValidateSameAs(判断是否相同)、ValidateLeng(长度判断)、ValidateDate(日期判断)等 index.vm: htmlbody$FormHelper.FormTag(%{actionTest, immediatetrue, useLabelstrue})#if($summary)p div 发生以下错误: /div #foreach($propName in $summary.InvalidProperties) $propName: #foreach($msg in $summary.GetErrorsForProperty($propName)) $msg #end br/ #end/p#end 姓名$FormHelper.TextField(user.name)br / 邮件$FormHelper.TextField(user.email)br / 密码$FormHelper.PasswordField(user.password)br / 确认密码$Form.PasswordField(user.confirmation)br /input typesubmit value确认 /$FormHelper.EndFormTag()/body/html 当浏览 http://localhost:***/validator/index.rails 在什么也不输的情况下直接点确认会报错 这样我们几乎一句检查的代码都没写就可以达到检查的效果了 当然默认的报错信息是英文的我们可以修改如下定义 [ValidateNonEmpty(不能为空, FriendlyName姓名)] public string Name { get { return name; } set { name value; } } 那么在姓名列没输入时会报错姓名: 不能为空 其实User类的定义就相当于一张表的Model在Monorail中把Model定义好就可以达到验证的功能了 本文转自永春博客园博客原文链接http://www.cnblogs.com/firstyi/archive/2007/10/31/944282.html如需转载请自行联系原作者