AJax几乎成了web2.0的一个代表,Java和Asp.net中都提供了一些AJax操作的控件。在MonoRail中也同样提供了AJax操作的共通类:AJaxHelper
AJaxHelper可以指定当文本框输入变化时调用后台代码、可以监控一个Form,当Form内控件值变化时调用后台代码、可以在点击一个按钮时调用后台代码,也可以在页面加载时就调用后台代码。当然这些调用都是采用AJax,即无刷新方式的,调用后可以自动更新页面中的一块区域的内容。
使用AJaxHelper后,几乎只要处理自己的业务逻辑就可以了,和AJax有关的代码都封装好了。下面就来看看这几种方式的使用方法:
以下的Controller类都是从SmartDispatcherController继承的
一、监控文本框
Controller代码:
publicvoidindex()
{
}
publicvoidInferAddress(Stringzip)
{
RenderText("Address"+zip);
}
其中String zip的zip变量名需要和vm页面中的控件名相同
vm代码:
1<html>
2<head>
3$AjaxHelper.GetJavascriptFunctions()
4</head>
5
6<body>
7<formid="theform">
8请输入邮政号码:<br>
9<inputtype="text"name="zip"id="zip">
10<br>
11<divid="address">
12</div>
13</form>
14
15$AjaxHelper.ObserveField("%{field='zip',frequency='2',url='inferaddress.rails',update='address',with='Form.serialize(theform)'}")
16
17</body>
18</html>
19
第三行是注册AJax的脚本,第十五行就是监听zip控件,当输入变化时自动调用inferaddress.rails,将返回的文本更新到dir id="address"的区域中
二、监控Form
vm:
<html>
<head>
$AjaxHelper.GetJavascriptFunctions()
</head>
<body>
<formid="myform">
姓名:<inputtype="text"name="name"id="name"><br>
地址:<inputtype="text"name="addressf"id="addressf">
<br>
<divid="message">
</div>
</form>
$AjaxHelper.ObserveForm("myform",2,"FormTest.rails","message",null)
</body>
</html>
controller
publicvoidFormTest(stringvalue,stringaddressf)
{
RenderText(value+"::"+addressf);
}
这里的定义有点奇怪,好像是一个BUG,也可能是1.0 RC3还在开发阶段所致
对Form中的第一个控件:"姓名",在controller必须定义成"value"名才能取得值,而且取得的值也有问题(会在前面加上控件名称),看下面的执行结果:
三、响应按钮事件
vm:
<html>
<head>
$AjaxHelper.GetJavascriptFunctions()
</head>
<body>
<divid="userlist">
</div>
$AjaxHelper.BuildFormRemoteTag("UserList.rails","%{update='userlist'}")
<table>
<tr>
<td>姓名:</td>
<td><inputtype="text"name="name"></td>
</tr>
<tr>
<td>邮件:</td>
<td><inputtype="text"name="email"></td>
</tr>
<tr>
<tdcolspan="2"align="center">
<inputtype="submit"value="增加">
</td>
</tr>
</table>
</form>
</body>
</html>
controller:
publicvoidUserList(Stringname,Stringemail)
{
IListlist=Session["userlist"]asIList;
if(list==null)
{
list=newArrayList();
}
list.Add(name+""+email+"<br>");
Session["userlist"]=list;
System.Text.StringBuilderuserList=newSystem.Text.StringBuilder();
for(inti=0;i<list.Count;i++)
{
userList.Append(list[i]asstring);
}
RenderText(userList.ToString());
}
这样每次点增加按钮时,就可以不用刷新页面,直接就能把增加的信息显示在指定的位置了,当然你可以执行一些复杂的操作
四、直接调用后台代码
Controller
publicvoidUser()
{
RenderText("user:"+Session["name"]asstring);
}
vm:
$AjaxHelper.GetJavascriptFunctions()
<divid="user">
</div>
<scriptlanguage=javascript>
newAjax.Updater('user','/myajax/User.rails',{});
</script>
可以在页面加载时就调用指定的User.rails命令,更新user区域
分享到:
相关推荐
:monorail: 单轨| 网络设计系统Monorail for React帮助开发人员执行。 这些组件由SimSpace的工程师和UX设计师的核心团队开发,可实现可靠的开发工作流程,以构建美观且功能强大的Web项目。快速开始将Monorail添加到...
MonoRail学习笔记一:一个小例子 随着微软放出消息,准备发布MVC的框架,各种议论纷至沓来。 以前用java、jsp对它的MVC结构、集中控制印象特别深刻,自从用了.NET后,虽然webform的控件很好用,总感觉有点怪怪的 ...
在MonoRail中,创建一个简单的MVC应用的步骤如下: 1. **设置项目**:首先,你需要安装Castle MonoRail和相关的依赖项。这可以通过NuGet包管理器或手动下载并添加引用来完成。确保你的项目配置正确,支持ASP.NET和...
在MonoRail中,视图通常是HTML模板,可以使用多种模板引擎如NVelocity或NHaml来编写。 4. **Model**:模型代表了应用程序中的业务对象和数据。MonoRail支持使用ORM(对象关系映射)工具,如NHibernate,将数据库...
在本小例子中,我们将探讨Monorail的基本概念和如何进行简单的应用开发。 首先,了解Monorail的核心概念: 1. **Model**(模型):模型代表应用程序中的业务逻辑和数据。它不关心视图如何显示或控制器如何处理请求...
在学习Castle Monorail时,你需要了解的主要知识点包括: 1. **MVC模式**:理解模型、视图和控制器之间的关系,以及它们如何协同工作以处理用户请求并呈现结果。 2. **依赖注入**:Castle Monorail支持依赖注入...
在Monorail框架中,分页功能通常通过`PaginationHelper`类实现,而`CreateCustomPage`则是该类中的一个重要方法,用于创建自定义的分页逻辑。 #### 三、`PaginationHelper.CreateCustomPage`详解 `...
它们可用于使用任何长的、最好是高质量的序列(例如来自另一个基因组草图的 scaftigs/contigs)来构建和完成高质量的基因组草图组装。 它们都依赖于准确的长 DNA 序列来修补现有基因组组装草案中的空白。 Cobbler...
《MonoRail:构建高效Web应用的框架探索》 MonoRail,这个名字在IT行业中或许并不如ASP.NET那样耳熟能详,但它却是.NET平台上的一个强大且灵活的Web应用程序框架。"ShoppingCart-MonoRail.rar"这个压缩包,包含了对...
在Monorail中,过滤器分为几种类型,包括ActionFilters、ExceptionFilters和ResultFilters,它们分别在不同的上下文执行。 1. ActionFilters:这些过滤器在控制器的Action方法执行之前和之后运行。你可以利用它们来...
通过学习和实践这个"ibatisnet+monorail+vs2010"项目,开发者可以深入理解如何在.NET环境中集成和使用这些技术,提高Web开发技能。同时,这个实例也展示了如何在一个现代化的开发环境中实现灵活的数据访问和高效的...
MonoRail、IBatisNet 和 Velocity 是三个在C#开发中常用的技术框架,它们分别用于不同的领域,但在实际项目中常被结合使用以构建高效、灵活的Web应用。下面将详细介绍这三个技术及其组合使用的要点。 **MonoRail** ...
在压缩包中的"实体类生成器"文件,可能包含了生成器的源代码、配置文件、使用说明文档等,开发者可以对其进行定制或二次开发,以满足更具体的需求。了解并熟练使用这类工具,对于提升MonoRail项目的开发效率具有重要...
在MonoRail中整合FCKeditor,需要在视图(View)中嵌入FCKeditor的JavaScript代码,并配置其提交表单的方式以配合MonoRail的MVC架构。 1. 引入FCKeditor资源:在视图中添加FCKeditor的JavaScript和CSS引用,通常...
在MonoRail中,模型类可以直接与数据库交互,或者通过ORM(对象关系映射)工具如NHibernate进行数据操作。 5. **依赖注入(Dependency Injection, DI)**: MonoRail支持DI,可以帮助开发者解耦代码,提高模块化。...
在Monorail中,视图通常位于` Views`目录下,对应于控制器的方法。 3. 模型(Models):模型类代表应用程序的数据和业务逻辑。在`MonoRailSample`中,模型类可能存在于`Models`目录下,如`User.cs`,用于表示用户...
在MonoRail中,MVC模式使得代码更加模块化,提高了可维护性和可扩展性。 文件列表中的"实体类生成器"可能是生成实体类的工具程序,而"MonoRail+实体类生成器"可能是一个包含具体配置和示例的项目文件,用户可以通过...
Filter在MonoRail中扮演着处理请求和响应的重要角色。它们是可重用的代码片段,可以在请求生命周期的不同阶段执行特定任务,如授权、日志记录、缓存控制等。你可以定义自己的过滤器,通过元数据或配置文件将其附加...
《Monorail项目中的文件管理:MvcFileManage深入解析》 ...对于开发者而言,理解和掌握这一部分的知识,不仅有助于提升在Monorail项目中的开发效率,也有助于在其他类似场景下构建自己的文件管理解决方案。