2013-06-10 3 views
0

Я получаю динамически Url из базы данных и передаю его в несколько маршрутов на 1 контроллер. И когда вы поместите содержимое тела url-элементов в модель View. И дело в том, что новая страница начнет загружаться только после компиляции проекта EDITED. Прежде всего, это просто показало 404 страницы.Несколько маршрутов и динамические страницы Asp.net mvc

public class DynamicController : MenuController 
{ 
    // 
    // GET: /Dynamic/ 
    s 

    public ActionResult Indexx(string routes) { 
     var str = service.Get().Single(x=>x.Url==routes); 

     return View(str); 
    } 


} 

Маршруты:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     /**/ IMenuService<Menu> service = new MenuEntityService(); 
     foreach (var item in service.Get()) 
     { 
      routes.MapRoute(
      name: item.Url, 
      url: item.Url, 
      defaults: new { controller = "Dynamic", action = "Indexx",routes=item.Url }, 
      namespaces: new[] { "MvcApplication1.Controllers" } 
     ); 
     } 
+0

Что вопрос меню? –

+0

Как я могу это исправить?) –

ответ

0

Регистрация маршрутов происходит только в случае Application_Start. Это событие происходит только один раз в течение жизненного цикла вашего приложения.

Таким образом, ваш пул приложений необходимо будет перезапустить, чтобы создать маршрут для каждого из созданных динамических путей. (Следовательно, после повторной компиляции/развертывания маршрутов, так как пул приложений автоматически перезапускается)

Чтобы избежать перезапуска пула приложений каждый раз при создании нового динамического пути, лучшим вариантом было бы создать поймать всех маршрут/по умолчанию для обработки этих динамических страниц

//this catches all requests 
routes.MapRoute(
    "Dynamic page route", 
    "{*routes}", 
    new { controller = "Dynamic", action = "Indexx" } 
); 
+0

чувак, как я могу отремонтировать этот бассейн, plz скажите мне. Этот вопрос просто дует мне в голову. –

+0

@TimurShahbanov Чтобы вручную перезапустить пул приложений, перейдите в IIS> Пулы приложений найдите пул приложений, связанный с вашим сайтом, щелкните его правой кнопкой мыши и выберите «Перезапустить». Чтобы избежать повторного запуска пула приложений, наилучшим решением было бы весь маршрут. –

+0

HM .. нормально я попробую –

0

Я нашел answear с этим: HttpRuntime.UnloadAppDomain(); я написал это в моем действии контроллера, которые создают элемент

Смежные вопросы