Значение по умолчанию для параметра в методе контроллера переопределяет все - PullRequest
2 голосов
/ 26 августа 2010

Здравствуйте, я только начал изучать mvc2 и у меня возникла проблема со значением по умолчанию для страницы параметров (вы можете увидеть метод ниже).

Всегда 0, независимо от того, что я ввожу в URL. Например, это

h.ttp: // локальный: 52634 / Продукция / Список / 2

должен отображать страницу 2, но в режиме отладки параметр страницы равен 0, поэтому я всегда получаю первую страницу списка в моем представлении.

Я использую предопределенные стандартные маршруты в глобальном asax при запуске нового проекта mvc2.

я что-то упустил?

//This is the ProductsController

   public ViewResult List(int page = 0)
    {

        var products = productsRepo.Products()

   //send in source, current page and page size
        productList = new PagedList<Product>(products, page, 10);

        return View(productList);
    }

Ответы [ 3 ]

3 голосов
/ 26 августа 2010

Это проблема маршрутизации, маршрут по умолчанию указывает свойство id, вы используете свойство с именем page.Я новичок в MVC, но добавлю этот маршрут до маршрута по умолчанию:

routes.MapRoute("MyRoute", "{controller}/{action}/{page}",
    new { controller = "Foo", action = "List", page = UrlParameter.Optional });
3 голосов
/ 26 августа 2010

Удалите «= 0» и выполните:

public ViewResult List(int? page)
{
    int val = page.GetValueOrDefault(0);

И везде используйте val вместо страницы. Это должно работать. Если нет, то это проблема с маршрутизацией.

НТН.

0 голосов
/ 16 мая 2019

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

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

, который ожидает, что имя параметра должно быть id. Теперь у вас есть 2 варианта: либо измените имя параметра на id, либо выберите другой вариант - укажите свой собственный маршрут в файле route.config, который находится в папке App_Start.

...