原文地址:Defining ASP.NET MVC Routes and Views in IronRuby
在过去的一篇文章中我写了一些关于使用DSL代替XML配置文件的想法。我还在monkey patching CLR objects using IronRuby文章研究了一下下它们如何协同工作。
那些文章是为了我能使用IronRuby定义Asp.net mvc的Routes做准备的。在下面的下载文件里包含了一个不完整的IronRuby视图引擎。我还没有完全做好。
IronRubyMvcDemo.zip Download (4.93 MB)
这些工作在最新的asp.net mvc代码里。
使用Ruby来写routes,需要在你的应用中引用IronRubuMvc库和导入IronRubyMvcLibrary.Routing命名空间在你的Global.asax的代码文件里。从那里,你能调用一个扩展方法在RouteCollection里,像这样
public class GlobalApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
RouteTable.Routes.LoadFromRuby();
}
}
它将在web根目录里寻找一个Routes.rb的文件,并使用文件里的内容装载routes.下面是我的定义:
$routes.map "products/{action}/{id}"
, {:controller => 'products', :action => 'categories', :id => ''}
$routes.map "{controller}/{action}/{id}", {:id => ''}
$routes.map "{controller}", {:action => 'index'}, {:controller => '[^\.]*'}
$routes.map "default.aspx", {:controller => 'home', :action => 'index'}
就是这些,我尝试使用tab来格式行的内容,这样他们看起来像个数据表格,而不是简单的代码定义。
在上面的下载文件中是一个使用IroRubyViewEngine的web应用例子。你可以看到我是如何应用Monkey Patching来引用视图数据cleaner.在按一个IronRuby内部,你可以访问到视图数据使用一个全局的变量,$model。这是很好的一件事,不管你通过强类型数据还是不用,你总可以引用视图数据使用$model.property_name.
这时候视图数据是一个视图数据字典,你可以使用类型名作为关键字来查找这个字典。
如果你想理解和修改这些代码,注意检查单元测试,它覆盖了我的95%的代码。下一步,IronRuby控制器...