Я занимаюсь созданием простого веб-сайта с использованием 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 }
);
Ваше значение маршрута с именем id
new { id = e.ID }
поэтому измените имя параметра метода для его соответствия
public ActionResult EventDetails(int? id)