У меня есть то, что я считаю очень стандартным контроллером:
Вот определение контроллера (немного внедрения зависимости, но стандартное):
public class SeriesController : Controller
{
private readonly IHostingEnvironment _env;
public SeriesController(IHostingEnvironment env)
{
_env = env;
}
[HttpGet("/series/{id:int?}/{title?}")]
public IActionResult Index(int id, string title)
{
if (id > 0)
{
var populateSeriesItem = new PopulateSeriesItem(_env, new SqlConnection());
var seriesItem = populateSeriesItem.GenerateSeriesItem(id);
//...
Если идентификатор отсутствует (или 0), то отображаются все записи; если оно равно 1 или больше, отображается одна запись. (Так клиент хочет!)
Я называю это следующим образом:
https://localhost/series/3/title
или
https://localhost/series/4/
но проблема в том, что id всегда равен 0 (и заголовок null).
Это тот случай, если я введу его в строку URL или укажу идентификатор вручную (т.е. / series? Id = 3)
Я просто не могу понять, чего мне не хватает.
Точно такая же настройка отлично работает с другим контроллером.
[HttpGet("/books/{id:int?}/{title?}")]
public ActionResult Index(int id, string title)
{
if (id > 0)
{
var populateBookItem = new PopulateBookItem(new SqlConnection(), _env);
var bookItem = populateBookItem.GenerateBookItem(id);
Это работает.
Это конфигурация маршрутизации (просто стандартная):
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Я, должно быть, упускаю что-то очевидное, но я сбит с толку!
Любой совет с благодарностью.
Обновление:
Я удалил всю функциональность из контроллера. Я просто буквально передаю это в представление.
Это работает: https://localhost:44319/series/14/megacities - просмотр отчетов id = 14.
Это работает: https://localhost:44319/series/5/megacities - просмотр отчетов id = 5
Это работает: https://localhost:44319/series/14/business-with-china - просмотр отчетов id = 14.
Это не работает: https://localhost:44319/series/5/business-with-china - идет к https://localhost:44319/series/0.
Существуют другие URL-адреса, которые следуют тому же шаблону. Некоторые работают, некоторые не работают.
Если я уберу параметр title, все они, похоже, будут работать.
Понятия не имею почему!