Динамические маршруты ASP.NET MVC - PullRequest
1 голос
/ 03 ноября 2010

Я запутался в маршрутах MVC.Допустим, у меня есть этот домен: poopoopants.com.Мне нужны некоторые стандартные URL-адреса из корня, которые переходят на страницу «О нас» или «Контакт»:

http://poopoopants.com/about
http://poopoopants.com/contact

Теперь у меня также будет бесконечное количество этих двух маршрутов ниже, где«[пользователь]» - это переменная имени пользователя для человека, зарегистрированного с учетной записью на poopoopants.com, а [путь к файлу] - путь к файлу для очистки URL-адреса , который может содержать символ / :

http://poopoopants.com/[user]
http://poopoopants.com/[user]/[file-path]

Итак, я предполагаю, что у меня будет один IndexController с действием Index для действия /, About для действия /about, Contact для действия /contact,и одно UserController с Index действием для /[user]/ и File действием для /[user]/[file-path].

Мой вопрос касается определенных маршрутов в Global.asax.cs.Пока у меня есть:

routes.MapRoute("Index", "/", new { controller = "Index", action = "Index" });
routes.MapRoute("About", "/about", new { controller = "Index", action = "About" });
routes.MapRoute("Contact", "/contact", new { controller = "Index", action = "Contact" });

Но что я должен указать для маршрутов / [user] и / [user] / [file-path], и каковы соответствующие сигнатуры методов их действийв UserController?

1 Ответ

2 голосов
/ 03 ноября 2010

Я их не тестировал, но должно работать:

Маршруты:

routes.MapRoute(
    "User",
    "{username}",
    new { controller = "User", action = "Index" }   
);

routes.MapRoute(
    "File",
    "{username}/{filepath}",
    new { controller = "User", action = "File" }

Подпись метода:

public ActionResult Index(string username);
public ActionResult File(string username, string filepath);

Кроме того, вы можете сделать свой контроллер индекса Route, вероятно, в одном предложении MapRoute.

Полезный инструмент: http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

...