Добавить маршрут после Application_Start - PullRequest
0 голосов
/ 24 сентября 2011

Я работаю над сайтом, на котором пользователь собирается добавлять страницы на сайт, и я пытался использовать маршрутизацию, чтобы сразу получить страницу после создания.

Например, пользователь может создать страницу About, и сейчас я добавляю некоторую логику в контроллер при добавлении страницы.

if (ModelState.IsValid)
        {
            context.Pages.Add(page);
            context.SaveChanges();
            RouteTable.Routes.MapRoute(page.Name, page.Url,
                            new { controller = "Home", action = "Index", id = UrlParameter.Optional });

            return RedirectToAction("Index");  
        }

Но когда я создаю страницу About с URL-адресом About и затем пытаюсь перейти в / About, я получаю ошибку 404.

Можно ли добавить маршруты вне Application_Start?

1 Ответ

0 голосов
/ 24 сентября 2011

Вы должны избегать определения любых маршрутов в действиях контроллера. Для вашего сценария вы можете определить следующий маршрут:

routes.MapRoute(
    "Default",
    "{id}",
    new { controller = "Home", action = "Index" }
);

Теперь запрос в форме /About будет перенаправлен на действие Index контроллера Home и передан id=About в качестве аргумента:

public ActionResult Index(string id)
{
    // if the request was /About, id will equal to About here
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...