【问题标题】:Faceoff: the ASP.NET MVC3 declarative, format stringstyle routing and node's imperitive routingFaceoff:ASP.NET MVC3 声明式、格式化字符串样式路由和节点的命令式路由
【发布时间】:2011-10-23 01:45:48
【问题描述】:

这是一个示例节点路由配置:

var requestHandlers = require("./requestHandlers");

var handle = {}
handle["/"] = requestHandlers.start;
handle["/start"] = requestHandlers.start;
handle["/upload"] = requestHandlers.upload;

它是 URL 和请求处理程序的映射。简单实用,但是 MVC 3 强大的格式字符串语法呢?

routes.MapRoute(
  "MediaRoute",               // Route name
  "{mediaTopic}/{mediaType}/{id}", // URL with parameters
  new { controller = "Media", action = "DisplayMediaItemById" },
  new { mediaType = "Article|Insight|Infographic" }

它允许在 {} 变量名称(如 mediaType)中使用正则表达式,用于路由并定义其正则表达式。

我确信以某种方式将正则表达式添加到节点路由将解决断开连接。也许如果有人进行了 MVC->node 转换,他们会有答案。我是否错过了任何出色的节点路由功能?

【问题讨论】:

    标签: c# javascript asp.net-mvc-3 node.js


    【解决方案1】:

    如果您只是想在您的路线上打开正则表达式,那么请查看expressjs guide 以获得答案。

    【讨论】:

    • 正是我想要的。这个问题有点宽泛,我有兴趣了解 node/expressJS 路由和 MVC 3 路由之间的区别和相似之处。
    • 我不知道 MVC 3 是如何工作的。但我可以解释 express 是如何做的:在请求到来之后 express 将其放入中间件队列中:首先将其转换为对象并调用 next() 将其传递给下一个中间件,然后是记录器、cookie/会话解析器、MVC 路由器(例如)或 app.router(express 内置路由器),然后是静态路由器,然后如果所有中间件都通过 next() 传递控制并且尚未发送任何响应,它会通过一个未找到的中间件进入最后一个中间件错误中间件。最后是内部错误中间件。
    • 中间件是简单的回调,它可以做到这一点:发送响应,添加/更新请求数据并执行 next() 或产生错误 next(new Error());是的。这么简单))
    猜你喜欢
    • 2012-04-23
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多