ASP.NET MVC - передающие параметры к контроллеру

102
задан tereško 13 July 2012 в 07:13
поделиться

5 ответов

Ваша маршрутизация должна быть настроена вроде {controller}/{action}/{firstItem}. Если Вы оставили маршрутизацию как значение по умолчанию {controller}/{action}/{id} в Вашем global.asax.cs файл, то необходимо будет передать в id.

routes.MapRoute(
    "Inventory",
    "Inventory/{action}/{firstItem}",
    new { controller = "Inventory", action = "ListAll", firstItem = "" }
);

... или что-то близко к этому.

102
ответ дан Jarrett Meyer 24 November 2019 в 04:29
поделиться

Для перефразирования ответ Jarret Meyer необходимо изменить название параметра к 'идентификатору' или добавить маршрут как это:

routes.MapRoute(
        "ViewStockNext", // Route name
        "Inventory/ViewStockNext/{firstItem}",  // URL with parameters
        new { controller = "Inventory", action = "ViewStockNext" }  // Parameter defaults
    );

причиной является маршрут по умолчанию, только ищет действия без параметра или параметра, названного 'идентификатором'.

Редактирование: Heh, nevermind Jarret добавил пример маршрута после регистрации.

15
ответ дан Community 24 November 2019 в 04:29
поделиться

public ActionResult ViewNextItem(int? id) делает id целое число nullable тип, никакая потребность в string<-> международные преобразования.

7
ответ дан Mahmoud Gamal 24 November 2019 в 04:29
поделиться

Или, Вы могли попытаться изменить тип параметра для строкового представления, затем преобразовать строку в целое число в методе. Я плохо знаком с MVC, но я полагаю, что Вам нужны nullable объекты в Вашем списке параметров, как еще контроллер укажет, что никакой такой параметр не был обеспечен? Так...

public ActionResult ViewNextItem(string id)...
0
ответ дан Benjamin 24 November 2019 в 04:29
поделиться

Есть другой способ сделать это (более подробно описанный в примере Стивена Вальтера пейджер

По сути, вы создаете ссылку в представлении:

Html.ActionLink("Next page", "Index", routeData)

В routeData вы можете укажите пары имя / значение (например, routeData ["page"] = 5), и в функции Index контроллера соответствующие параметры получат значение. То есть

public ViewResult Index(int? page)

будет иметь страницу , переданную как 5. I Должен признать, довольно необычно, что строка ("страница") автоматически становится переменной - но именно так MVC работает и на других языках ...

1
ответ дан 24 November 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: