`
raisun_1988
  • 浏览: 113750 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

MonoRail学习笔记十:Controller和Url的对应关系

    博客分类:
  • .Net
阅读更多

在MonoRail里面存在Url和Controller之间的对应关系(当然,这种映射关系我们也可以修改),网上也有了一些说明,但好像不太完全。我再总结一下,有遗漏的,欢迎增加:
1、普通方式

publicclassHomeController:Controller
{
publicvoid
Index()
{
}

}

对应的是:http://***/home/index.rails, vm文件对应views/home/index.vm

2、ControllerDetails方式

[ControllerDetails("Extended2")]
publicclass
ExtendedController:Controller
{
publicvoid
Save()
{
thrownew
Exception();
}

}

对应的是:http://***/Extended2/Save.rails, vm文件对应views/Extended2/Save.vm

3、Area方式

[ControllerDetails(Area="subarea")]
publicclassHomeController:Controller
{
publicvoidIndex()
{

}

}

对应的是:http://****/subarea/home/Index.rails, vm文件对应views/subarea/home/Index.vm

4、Default动作
可以设置:

[DefaultAction("Index")]
publicclassServletController:Controller
{
publicvoidIndex(intid,stringname,intage,DateTimebirthday)
{
}

}

那么当所有访问http://***/servlet/aa.rails时,当ServletController中没有对应方法时,都会自动执行Index方法 (vm文件对应views/servlet/aa.vm)

5、动态动作

[DynamicActionProvider(typeof(DynamicActionProvider1))]
publicclassDynController:Controller
{

}

publicclassDynamicActionProvider1:IDynamicActionProvider
{
publicvoidIncludeActions(Controllercontroller)
{
controller.DynamicActions[
"index"]=newIndexDynamicAction();
}

}

publicclassIndexDynamicAction:IDynamicAction
{
publicvoidExecute(Controllercontroller)
{
controller.PropertyBag.Add(
"message","hello!");
}

}

对应的是:http://****/dyn/Index.rails, vm文件对应views/dyn/Index.vm
那么对于某一个action在很多Controller中都会用到的情况,就可以把这个action定义在DynamicAction中

对应的是:http://****/dyn/Index.rails, vm文件对应views/dyn/Index.vm
那么对于某一个action在很多Controller中都会用到的情况,就可以把这个action定义在DynamicAction中

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics