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

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

publicclass HomeController: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 " )]
public class HomeController:Controller
{
publicvoidIndex()
{

}

}

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

4、Default动作
可以设置:

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

}

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

5、动态动作

[DynamicActionProvider( typeof (DynamicActionProvider1))]
publicclass DynController:Controller
{

}

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

}

publicclass IndexDynamicAction: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中

你可能感兴趣的:(servlet,Rails)