- 浏览: 117924 次
- 性别:
- 来自: 长沙
最新评论
-
leecyz:
不可分页全选
脚本实现全选GridView中的CheckBox -
agameplay:
呵呵,感谢,一直不知道会员定期过期检测,这下有法了,以前以为T ...
net中的定时器 -
raisun_1988:
yining159 写道这个跟.net有什么关系。。。
web ...
asp.net 页面弹出层,背景变灰不能操作 -
yining159:
这个跟.net有什么关系。。。
asp.net 页面弹出层,背景变灰不能操作 -
wm1688:
very good需要说明一下的是 在mymetadata文件 ...
Myeclipse中复制项目的注意事项
Mono提供很多组件可以方便的处理页面:可以自动将后台的值填充到页面,可以自动进行Javascript验证,可以自动在后台验证等。这些功能都是比较实用的,可以减少很多开发
FormHelper是用来对应html页面中Form内的tag的,可以自动填充textbox等
ValidationHelper可以帮助我们在前台利用Javascript验证
Castle.Components.Validator组件可以在后台对页面输入值进行验证
一、自动填充页面
普通填充:
HomeController:
我这里只是实验了常用的textbox和radiobutton,其他的也是同样处理的
高级填充:
二、前台验证
1、只能输入数字的限制
只需要在Vm中写:
$FormHelper.InstallScripts()
$FormHelper.NumberField("age")
$FormHelper.NumberField("amount", "%{exceptions='32',forbid='48,49'}")
第一句是注册脚本,第二句是生成一个textbox,并且只能输入数字
第三句是生成一个textbox,并且只能输入数字,同时可以输入code=32的字符,同时不能输入code=48或49的字符
2、ValidationHelper验证
功能很强大,我这里只是列出一些简单的使用,使用这种方式时几乎不需要后台代码,只需要在vm文件中定义就可以了:
然后主要就是validators属性设置的值了,比如:blank(不能为空)、length|6(六位长度)、email(邮件类型)等
在这个例子中,当什么也不输,直接点测试时,会弹出一个对话框报错:Please enter 姓名
这里显示的都是英文的报错信息,如果需要使用中文报错,可以使用以下方法:
(由于目前MonoRail没有提供简体中文的报错,需要我们自己生成)
复制MonoRail\Castle.MonoRail.Framework\Controllers目录下的ValidationLang.resx文件,改名为ValidationLang.zh-cn.resx,然后将此文件中对应的英文提示改为中文,比如:
然后将vm中的第四条语句改成:
$ValidationHelper.InstallScripts("zh-cn")
这样当再次照上面的步骤执行时会弹出一个对话框报错:请输入:姓名
三、Castle.Components.Validator后台验证使用
ValidatorController.cs代码:
index.vm:
这样,我们几乎一句检查的代码都没写,就可以达到检查的效果了
当然,默认的报错信息是英文的,我们可以修改如下定义:
其实User类的定义就相当于一张表的Model,在Monorail中把Model定义好,就可以达到验证的功能了
FormHelper是用来对应html页面中Form内的tag的,可以自动填充textbox等
ValidationHelper可以帮助我们在前台利用Javascript验证
Castle.Components.Validator组件可以在后台对页面输入值进行验证
一、自动填充页面
普通填充:
HomeController:
publicvoidFill1()
{
PropertyBag.Add("id","1");
PropertyBag.Add("name","GSpring");
PropertyBag.Add("sex","1");
}
Fill1.vm:{
PropertyBag.Add("id","1");
PropertyBag.Add("name","GSpring");
PropertyBag.Add("sex","1");
}
<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时会自动将对应的值绑定到页面中去,页面结果为:id:$FormHelper.TextField("id")<br/>
name:$FormHelper.TextField("name")<br/>
sex
male:$FormHelper.RadioField("sex","1")
female:$FormHelper.RadioField("sex","0")
</form>
我这里只是实验了常用的textbox和radiobutton,其他的也是同样处理的
高级填充:
publicvoidIndex()
{
PropertyBag.Add("list",newstring[]
{
"value1","value2"
});
PropertyBag.Add("contacts",newContact[]
{
newContact("john","address1","phonenumber1"),
newContact("mary","address2","phonenumber2")
});
}
Vm代码:{
PropertyBag.Add("list",newstring[]
{
"value1","value2"
});
PropertyBag.Add("contacts",newContact[]
{
newContact("john","address1","phonenumber1"),
newContact("mary","address2","phonenumber2")
});
}
<formaction="Save.rails"method="post">
$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>
可以自动将对象、数组中对应的值填充到页面上去$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", "%{exceptions='32',forbid='48,49'}")
第一句是注册脚本,第二句是生成一个textbox,并且只能输入数字
第三句是生成一个textbox,并且只能输入数字,同时可以输入code=32的字符,同时不能输入code=48或49的字符
2、ValidationHelper验证
功能很强大,我这里只是列出一些简单的使用,使用这种方式时几乎不需要后台代码,只需要在vm文件中定义就可以了:
<html>
<head>
<title>ValidationTest</title>
$ValidationHelper.InstallScripts()
$ValidationHelper.SetSubmitOptions(true,true,false,0)
</head>
<body>
<formmethod="post"id="demoForm"onsubmit="$ValidationHelper.GetValidationTriggerFunction()">
姓名:<inputtype="text"name="Name"id="Name"displayName="姓名"validators="blank"/><br/>
密码:<inputtype="password"name="Password"id="Password"validators="length|6"/><br/>
邮件:<inputtype="text"name="Email"id="Email"validators="email|3"/><br/>
确认邮件:<inputtype="text"name="Email_Confirm"id="Email_Confirm"validators="equalto|Email"/><br/>
<inputtype="submit"name="Submit"value="测试"/>
</form>
</body>
</html>
开始的$ValidationHelper.InstallScripts()和$ValidationHelper.SetSubmitOptions(true, true, false, 0)两句话是注册脚本的,不能少<head>
<title>ValidationTest</title>
$ValidationHelper.InstallScripts()
$ValidationHelper.SetSubmitOptions(true,true,false,0)
</head>
<body>
<formmethod="post"id="demoForm"onsubmit="$ValidationHelper.GetValidationTriggerFunction()">
姓名:<inputtype="text"name="Name"id="Name"displayName="姓名"validators="blank"/><br/>
密码:<inputtype="password"name="Password"id="Password"validators="length|6"/><br/>
邮件:<inputtype="text"name="Email"id="Email"validators="email|3"/><br/>
确认邮件:<inputtype="text"name="Email_Confirm"id="Email_Confirm"validators="equalto|Email"/><br/>
<inputtype="submit"name="Submit"value="测试"/>
</form>
</body>
</html>
然后主要就是validators属性设置的值了,比如:blank(不能为空)、length|6(六位长度)、email(邮件类型)等
在这个例子中,当什么也不输,直接点测试时,会弹出一个对话框报错:Please enter 姓名
这里显示的都是英文的报错信息,如果需要使用中文报错,可以使用以下方法:
(由于目前MonoRail没有提供简体中文的报错,需要我们自己生成)
复制MonoRail\Castle.MonoRail.Framework\Controllers目录下的ValidationLang.resx文件,改名为ValidationLang.zh-cn.resx,然后将此文件中对应的英文提示改为中文,比如:
fvalidate.i18n=
{
//Validationerrors
errors:
{
blank:[
["请输入:",0]
],
将框架项目重新编译{
//Validationerrors
errors:
{
blank:[
["请输入:",0]
],
然后将vm中的第四条语句改成:
$ValidationHelper.InstallScripts("zh-cn")
这样当再次照上面的步骤执行时会弹出一个对话框报错:请输入:姓名
三、Castle.Components.Validator后台验证使用
ValidatorController.cs代码:
publicclassUser
{
privateintid;
privatestringname,email,password,confirmation;
publicUser()
{
}
publicUser(stringname,stringemail)
{
this.name=name;
this.email=email;
}
publicintId
{
get{returnid;}
set{id=value;}
}
[ValidateNonEmpty]
publicstringName
{
get{returnname;}
set{name=value;}
}
[ValidateNonEmpty,ValidateEmail]
publicstringEmail
{
get{returnemail;}
set{email=value;}
}
[ValidateNonEmpty]
publicstringPassword
{
get{returnpassword;}
set{password=value;}
}
[ValidateSameAs("Password")]
publicstringConfirmation
{
get{returnconfirmation;}
set{confirmation=value;}
}
}
publicclassValidatorController:SmartDispatcherController
{
publicValidatorController()
{
}
publicvoidIndex()
{
}
publicvoidTest([DataBind("user",Validate=true)]Useruser)
{
if(HasValidationError(user))
{
Flash["user"]=user;
Flash["summary"]=GetErrorSummary(user);
RedirectToReferrer();
}
else
{
//其他操作
CancelView();
}
}
}
最主要的就是User中每个字段上定义的属性,比如ValidateNonEmpty(不能为空)、ValidateEmail(邮件格式)、ValidateSameAs(判断是否相同)、ValidateLeng(长度判断)、ValidateDate(日期判断)等{
privateintid;
privatestringname,email,password,confirmation;
publicUser()
{
}
publicUser(stringname,stringemail)
{
this.name=name;
this.email=email;
}
publicintId
{
get{returnid;}
set{id=value;}
}
[ValidateNonEmpty]
publicstringName
{
get{returnname;}
set{name=value;}
}
[ValidateNonEmpty,ValidateEmail]
publicstringEmail
{
get{returnemail;}
set{email=value;}
}
[ValidateNonEmpty]
publicstringPassword
{
get{returnpassword;}
set{password=value;}
}
[ValidateSameAs("Password")]
publicstringConfirmation
{
get{returnconfirmation;}
set{confirmation=value;}
}
}
publicclassValidatorController:SmartDispatcherController
{
publicValidatorController()
{
}
publicvoidIndex()
{
}
publicvoidTest([DataBind("user",Validate=true)]Useruser)
{
if(HasValidationError(user))
{
Flash["user"]=user;
Flash["summary"]=GetErrorSummary(user);
RedirectToReferrer();
}
else
{
//其他操作
CancelView();
}
}
}
index.vm:
<html>
<body>
$FormHelper.FormTag("%{action='Test',immediate='true',useLabels='true'}")
#if($summary)
<p>
<div>
发生以下错误:
</div>
#foreach($propNamein$summary.InvalidProperties)
$propName:#foreach($msgin$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/>
<inputtype="submit"value="确认"/>
$FormHelper.EndFormTag()
</body>
</html>
当浏览 http://localhost:***/validator/index.rails在什么也不输的情况下直接点确认,会报错:<body>
$FormHelper.FormTag("%{action='Test',immediate='true',useLabels='true'}")
#if($summary)
<p>
<div>
发生以下错误:
</div>
#foreach($propNamein$summary.InvalidProperties)
$propName:#foreach($msgin$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/>
<inputtype="submit"value="确认"/>
$FormHelper.EndFormTag()
</body>
</html>
这样,我们几乎一句检查的代码都没写,就可以达到检查的效果了
当然,默认的报错信息是英文的,我们可以修改如下定义:
[ValidateNonEmpty("不能为空",FriendlyName="姓名")]
publicstringName
{
get{returnname;}
set{name=value;}
}
那么在姓名列没输入时会报错:姓名: 不能为空publicstringName
{
get{returnname;}
set{name=value;}
}
其实User类的定义就相当于一张表的Model,在Monorail中把Model定义好,就可以达到验证的功能了
发表评论
-
脚本实现全选GridView中的CheckBox
2010-11-16 16:36 1175今天终于实现了全选CheckBox而不用AJAX或者回传事件, ... -
net中的定时器
2010-11-09 10:57 882在web中某个类中对某个方法我想让它定时执行。 对于此,我们 ... -
Visual Studio 最常用的13个快捷键
2010-11-09 09:30 9091. F5:启动调试 2. F7 /Shif ... -
Javascript写入Html
2010-11-06 09:31 979一:打开新的窗口,并向其中写入html代码 1 var ... -
没有源码时,添加网站功能
2010-09-29 14:11 805有的时候想要在编译成DLL的网站上添加一个功能,又需要访问数据 ... -
asp.net代码中尖括号和百分号的含义
2010-09-28 11:41 1653asp.net代码中尖括号和百分号的含义 在.aspx ... -
SQL对象名无效的解决
2010-09-03 17:29 1636SQL对象名无效的解决方法 http://www.itpob. ... -
.net 获取url的方法
2010-08-24 14:33 1012测试的url地址是http://www.gkxsn.com/t ... -
asp.net返回上一个页面
2010-08-24 14:30 923//首先要获取URL,如下所示: private strin ... -
ASP.NET中突破上传4M文件的限制
2010-08-17 09:26 871http://www.itpob.cn ... -
使用IIS内置压缩功能,增加网站访问速度
2010-08-16 20:35 1017【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上购 ... -
过滤HTML标签
2010-08-13 09:27 982[www.itpob.cn] http://www.itpob ... -
VS2008+SQL2005 开发环境搭建
2010-08-04 14:09 1627【网上购物论坛】-IT泡吧![Www.itpob.Cn]网 ... -
javascript获取本页面URL地址
2010-08-03 15:09 821【网上购物论坛】-IT泡 ... -
无限级分类设计--纯数据库实现
2010-08-03 10:13 1040【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上 ... -
WEB第三方打印控件[ASP.NET常用工具]
2010-08-03 10:04 3113【网上购物论坛】-IT泡吧![Www.itpob. ... -
虚拟主机上用Asp.net实现Urlrewrite
2010-07-23 10:44 803【网上购物论坛】-IT泡吧![Www.itpob.Cn ... -
asp.net实现返回上一页的6种方法
2010-07-23 10:32 733【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上 ... -
ASP.NET文件下载函数使用浅析
2010-07-23 10:22 715【网上购物论坛】-IT泡吧![Www.itpob.Cn ... -
教你在asp.net中动态变更CSS
2010-07-23 10:18 768【网上购物论坛】-IT泡吧![Www.itpob.Cn]网上购 ...
相关推荐
:monorail: 单轨| 网络设计系统Monorail for React帮助开发人员执行。 这些组件由SimSpace的工程师和UX设计师的核心团队开发,可实现可靠的开发工作流程,以构建美观且功能强大的Web项目。快速开始将Monorail添加到...
MonoRail学习笔记一:一个小例子 随着微软放出消息,准备发布MVC的框架,各种议论纷至沓来。 以前用java、jsp对它的MVC结构、集中控制印象特别深刻,自从用了.NET后,虽然webform的控件很好用,总感觉有点怪怪的 ...
本资源包含“MonoRail基础学习文档”和“实例”,旨在帮助初学者快速入门并深入理解MonoRail的使用。 首先,让我们详细了解 MonoRail 的核心概念: 1. **Controller**:在MonoRail中,Controller是处理用户请求的...
RAILS v1.5.1 和 Cobbler v0.6.1 雷内 L.沃伦,2014-2021 电子邮件:bcgsc.ca 的 rwarren 名称 RAILS: Radial Assembly Improvement by Long Sequence Scaffolding Cobbler: Gap-filling with long sequences 描述 ...
自动路由 :magnifying_glass_tilted_left: SEO友好:元标记 :globe_with_meridians: :wheelchair_symbol: 无障碍前端路由 :monorail: :dizzy: 页面数据 :high_voltage: 代替Vue CLI :handshake: 前端和后端共享 :...
MonoRail是 Castle Project 的一部分,它是一个开源的、基于.NET框架的Web应用程序开发框架,设计用于替代ASP.NET Web Forms,提供了更面向对象...继续学习和探索MonoRail的其他功能,将帮助你充分利用这个强大的框架。
总的来说,尽管Monorrail已经被ASP.NET MVC框架所取代,但它仍是一个学习MVC模式和.NET Web开发的宝贵资源。通过深入理解Monorail,开发者可以更好地理解现代Web框架的设计原则,这将有助于他们在使用其他类似框架...
Monorail框架提供了`PaginationHelper.CreateCustomPage`方法来实现自定义分页功能,帮助开发者更灵活地控制页面数据的展示方式。 #### 二、Monorail框架简介 Monorail是基于.NET平台的一个MVC(Model-View-...
7. 控件(Controls):Monorail中的控件类似于ASP.NET中的服务器控件,但更加灵活和轻量,可以用于复用和封装UI组件。 通过这个简单的例子,你可以了解Monorail的基本结构和工作原理,从而更好地掌握这个框架。它...
Monorail,中文通常称为单轨铁路,是一种城市轨道交通系统,其特点是列车运行在单一的轨道上,而非传统的双轨铁路。...在深入学习前,建议先确定Monorail的具体上下文,以便更有针对性地获取和学习相关知识。
《MonoRail:构建高效Web应用的框架探索》 MonoRail,这个名字在IT行业中或许并不如ASP.NET那样耳熟能详,但它却是.NET平台上的一个强大且灵活的Web应用程序框架。"ShoppingCart-MonoRail.rar"这个压缩包,包含了对...
你可以通过查看和分析这些文件来深入了解如何在Monorail项目中实际使用和配置过滤器。 总的来说,Monorail的过滤器机制提供了强大的功能,可以帮助开发者在不侵入业务逻辑的情况下增强应用程序的功能和安全性。通过...
MonoRail .NET是一个开源的Web应用程序框架,设计用于替代ASP.NET,它提供了更灵活的开发模式和更高的可扩展性。 MonoRail这个名字来源于铁路系统中的单轨列车,寓意其为单一轨道上的应用程序框架,强调轻量级和高效...
4. **数据验证**:根据数据库字段的约束条件(如非空、长度限制等),生成相应的验证逻辑,确保数据的完整性和一致性。 5. **自动更新**:当数据库结构发生变化时,生成器能检测到并更新相关的实体类,保持代码与...
MonoRail、IBatisNet 和 Velocity 是三个在C#开发中常用的技术框架,它们分别用于不同的领域,但在实际项目中常被结合使用以构建高效、灵活的Web应用。下面将详细介绍这三个技术及其组合使用的要点。 **MonoRail** ...
《Monorail项目:留言簿系统详解》 Monorail项目是一个典型的Web应用程序开发实例,其核心部分是一个名为“留言簿”(GuestBook)的...通过理解和学习这个模块,开发者可以更好地掌握MVC架构的应用,提升Web开发能力。
本教程将引导你逐步了解MonoRail的基本概念和使用方法,包括filter、home、rescue、routing和layout这五个关键部分。 1. **MonoRail框架介绍** MonoRail是由Castle Project开发的,它借鉴了Ruby on Rails的设计...
通过学习和实践这个"ibatisnet+monorail+vs2010"项目,开发者可以深入理解如何在.NET环境中集成和使用这些技术,提高Web开发技能。同时,这个实例也展示了如何在一个现代化的开发环境中实现灵活的数据访问和高效的...
MonoRail是.NET平台上的一款轻量级的Web应用框架,它为开发者提供了强大的MVC(Model-View-Controller)模式支持,旨在提供比ASP.NET更灵活、更可扩展的开发环境。在 MonoRail 中实现文件上传功能,特别是整合...