随笔 - 97  文章 - 20  评论 - 94  阅读 - 22万

MonoRail学习-Component

MonoRail学习-Component

MonoRail学习目录

在我们asp.net中,经常有界面代码相同的时候,使用UserControl,在MonoRail中有两种方式来实现页面的重用,
第一种,只重用view
如下:
#parse("home/newslist.vm")
相当于include这个newslist.vm到指定的页面


第二种就是Component
Component创建如下:
1.创建一组件类NewsList.cs

using System;
using Castle.MonoRail.Framework;

namespace MonoRailWeb.components
{
 
/// <summary>
 
/// NewsList 的摘要说明。
 
/// </summary>

 public class NewsList : SmartViewComponent
 
{
  
public NewsList()
  
{
  }


  
public override void Render()
  
{
   
//将值传输给View
   this.Context.ContextVars["name"= "这是一个新闻组件";

   
//显示相应的View
   this.RenderView("News","NewsList");
  }

 }

}

2.在views目录下创建components目录,在components目录下在创建news,在news目录下创建newslist.vm文件
<table>
<tr><td>$name</td></tr>
</table>
这是组件的界面部分

3.在页面中调用该组件
#component(NewsList)
这样一个组件就创建完成了。
通常,我们会为组件设定一些参数,这样在我们调用组件的时候在设置参数的值。
那么就需要在组件类中得到参数的值,如下:
//得到参数ID的值
string id = Context.ComponentParameters["id"].ToString();

在页面中设置参数的值
#component(NewsListById with "id=1")
若有多个参数,则如下:
#component(NewsListById with "id=1" "name=test")

posted on   关寒融冰  阅读(371)  评论(1编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2009年5月 >
26 27 28 29 30 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31 1 2 3 4 5 6

鲁ICP备07018066号-1
点击右上角即可分享
微信分享提示