我的Controller类中有一个名为handlePathChange()的虚函数 它会检查当前的URL,并为其分配正确的视图 这是我到目前为止的代码:
void Controller::handlePathChange()
{
if ( app->internalPathMatches(basePath) )
{
string path = app->internalPathNextPart(basePath);
if ( path.empty() ) // If it's empty it is known that the index of the controller should show up
index();
// else if ( path == ?? ) each controller has it's own routes
// call_some_unknown_function();
}
}
我如何概括这一点?
我在想两个选择:
有什么想法吗?
答案 0 :(得分:1)
我意识到你的帖子使用的是c ++示例,但是如果你不介意阅读一些c#,那么Scott Guthrie的这篇文章就是对ASP.NET MVC框架如何实现其路由的一个很好的概述:
http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx
我想你会发现这篇文章非常有帮助。在过于简化的排序方式中,它类似于您的选项#2,但始终检查参数。如果未提供该参数,则它使用相同的路由规则,但提供“默认”值并将请求发送到正确的视图。该策略避免了您提到的问题,如果指定了参数,则无法找到相应的视图。
希望这有帮助。