2015-05-11 3 views
2

Я хочу иметь свой URL, чтобы быть/{номер страницы} для моей домашней странице, например, локального хоста: 50915/1 для страницы 1 для списка записей, мой URL маршрутизации выглядит следующим образом:маршрутизации Проблемы MVC4

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "EditForm", 
      url: "{controller}/{formid}", 
      defaults: new { controller = "ManageForm", action = "Update", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "Home", 
      url: "{page}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

Второй метод MapRoute - это тот, который я добавил для выполнения желаемого действия. Он работает отлично, но всякий раз, когда я пытаюсь получить доступ к другому контроллеру «ManageController», например, localhost: 50915/ManageForm, он возвращает мне домашнюю страницу (ту же страницу, на которой отображается список записей).

Вот снимок моего решения:

Solution Snapshot

Всякий раз, когда я пытался удалить строки кодов, которые выполняют этот URL перенаправления для пагинации Главной страницы, все работает отлично, но, конечно, URL будет как локальный хост?: 50915 стр = 1

Моего HomeController выглядит следующим образом:

public class HomeController : Controller 
{ 
    // 
    // GET: /Home/ 
    [HttpGet] 
    public ViewResult Index(int page = 1) 
    { 
     const int pageSize = 4; 
     FormCollection forms = FormService.GetAllActiveForms(page, pageSize); 

     var formModel = new FormListViewModel 
     { 
      Forms = forms, 
      PagingInfo = new PageInfo 
      { 
       PageNumber = page, 
       PageSize = pageSize, 
       TotalItems = forms.Count > 0 ? forms[0].TotalRecord : 0 
      } 
     }; 

     return View(formModel); 
    } 
} 

Помощь много повыша спасибо.

+0

Измените URL из Главная дорога к url: Главная/Индекс/{страница} ", –

ответ

0

Решение будет отображать новый маршрут для формы привести к URL управления/ManageForm/Создать

Я изменил RouteConfig.cs следующим образом:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     //<host>/{page} 
     routes.MapRoute(
      name: "Home", 
      url: "{page}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

     //ManageForm/Create 
     routes.MapRoute(
      name: "CreateForm", 
      url: "{controller}/Create", 
      defaults: new { controller = "ManageForm", action = "Index", id = UrlParameter.Optional } 
     ); 

     //ManageForm/{formid} 
     routes.MapRoute(
      name: "EditForm", 
      url: "{controller}/{formid}", 
      defaults: new { controller = "ManageForm", action = "Update", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
+1

Просто поясните - если ваш '' {controller}/Create "' шаблон не будет общим, вы можете пропустить значения по умолчанию и просто пользователь '' ManageForm/Create "' to Более конкретно. – Kamo

+0

Да, спасибо! Теперь я начинаю получать его лучше. Я был совершенно новый об этих конфигурациях маршрутизации. –

1

Вы не можете использовать localhost:50915/ManageForm, потому что это конфликтует с другим определением маршрута. MVC не видит разницы между "{controller}/{formid}" и "{page}", если ваш параметр маршрута не является обязательным.

Вы должны использовать свой первый маршрут как localhost:50915/ManageForm/{formId}, чтобы заставить его работать.

+0

Спасибо, это дало мне идею решить эту проблему! –

+0

Отлично! Если вы не возражаете, пожалуйста, примите мой ответ :) – Kamo

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