У меня есть следующий HTML:
<%: Html.ActionLink(item.ProductName, "Details", "Product", new { item.ProductId }, null)%>
Это отображается как:
<a href="/Product/Details?ProductId=1">My Product Name</a>
Однако, когда я нажимаю на это, я получаю следующую ошибку:
Словарь параметров содержит пустую запись для параметра 'id' необнуляемого типа 'System.Int32' для метода 'System.Web.Mvc.ActionResult Details (Int32)' в 'MyProject.Controllers.ProductController».Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.
Имя параметра: параметры
Похоже, что моя маршрутизация не любит строку запроса "? ProductId = 1".
Если я использую вместо:
<%: Html.ActionLink(item.ProductName, string.Format("Details/{0}", item.ProductId), "Product", null, null)%>
Я получаю следующую ссылку:
<a href="/Product/Details/1">My Product Name</a>
... и это работает правильно при нажатии.
Я что-то здесь упускаю?Я хотел бы использовать RouteValues, но я не понимаю, почему возникает эта ошибка.Как я могу заставить свой метод Controller принимать параметры строки запроса?
Единственное отображение маршрута, которое у меня есть:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);