假设我有一个如下所示的网址:
http://www.mysite.com/area/topic/subtopic/subsubtopic
其中主题和子主题的数量是任意的。
有没有办法在ASP.NET MVC中处理这种URL?
答案 0 :(得分:1)
我认为唯一的方法是将区域映射到{controller},将主题映射到{action},然后子主题就必须是操作的参数。
MVC确实将您限制为控制器与动作的二维数组。
答案 1 :(得分:1)
您可以使用通配符路由将任意数量的参数传递给操作,例如比如"../{topic}/{subtopics*}"
。然后,URL中主题后面指定的所有内容将按原样传递给操作的参数,然后您可以将该值拆分为单独的子主题。
Scott Guthrie在35:20左右在this video中提到了这种技巧。
答案 2 :(得分:1)
我们使用反射和调用方法完成此操作。
我们已经为IIS添加了一个自定义的.net 404处理程序,这个处理程序获取了url的部分并按照
的方式调用它们namespace area{
class topic
{
void subtopic(param object[] subsubtopic)
{
//do page
}
}
}
显然,网址到方法签名的确切映射会有所不同。
所以mydomain.com/pages/blogs/newblogs/tech 或者mydomain.com/pages/blogs/newblogs/health
可能看起来像
namespace pages{
class blogs
{
void newblogs(string subject)
{
if(subject == "tech")
subject = "ace";
if(subject == "health")
subject = "itch it";
}
}
}
您可能还想查看restful urls。