URL.Действие, передающее ноль, нужно целое число

1

Я занимаюсь созданием простого веб-сайта с использованием MVC 4 и бритвы. У меня возникли проблемы с получением int из url.action, который заполняется на лету. Я отлаживал и обнаружил, что идентификатор имеет значение (id имеет только 1), но когда он передается, он каким-то образом становится нулевым.

Часть просмотра:

@if (Model.Any())
{
  foreach (var e in Model)
  {
    <a href="@Url.Action("EventDetails", "Event", new{id = e.ID})">
      <div id="eventBox">
        <!-- stuff !-->
      </div>
    </a>
  }
}

И контроллер:

public ActionResult EventDetails(int? eventID)
{
     if (eventID != null)
     {
         //stuff
     }
}

Я действительно не знаю, что происходит за кулисами, чтобы заставить его измениться на нуль, и мне нужна помощь. Я использую только маршрутизацию по умолчанию, предоставляемую Visual Studio прямо сейчас:

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
Теги:
routes
asp.net-mvc-4
url.action

1 ответ

2
Лучший ответ

Ваше значение маршрута с именем id

new { id = e.ID }

поэтому измените имя параметра метода для его соответствия

public ActionResult EventDetails(int? id)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню