Как представить иерархически организованный URL в ASP.NET MVC - PullRequest
1 голос
/ 14 января 2010

Допустим, у меня есть URL, который выглядит следующим образом:

http://www.mysite.com/area/topic/subtopic/subsubtopic

где число тем и подтем произвольно.

Есть ли способ обработки URL такого типа в ASP.NET MVC?

Ответы [ 3 ]

1 голос
/ 14 января 2010

Вы можете передать произвольное количество параметров в действие, используя подстановочный маршрут, например, как "../{topic}/{subtopics*}". Все, что указано после темы в URL-адресе, затем передается как есть параметру действия, и вы можете затем разбить это значение на отдельные подтемы.

Скотт Гатри упоминает эту технику в этом видео около 35: 20.

1 голос
/ 14 января 2010

Мы делаем именно это с помощью отражения и метода invoke.

Мы добавили пользовательский обработчик .net 404 в IIS, и этот обработчик берет части URL и вызывает их в соответствии с

namespace area{

class topic 
{

void subtopic(param object[] subsubtopic)
{
 //do page
}    
}

}

Очевидно, что точное отображение URL-адреса на сигнатуру метода будет отличаться.

Итак, 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";
}    
}

}

Возможно, вы захотите просмотреть релевантные URL .

1 голос
/ 14 января 2010

Я думаю, что единственный способ сделать это - отобразить область на {controller}, а тему - на {action}, и тогда подтемы просто должны быть параметрами для действия.

MVC ограничивает вас двумерным массивом контроллера и действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...