я определил следующие маршруты, чтобы иметь дружественные адреса в моем RouteConfig.cs
:ASP.NET MVC: параметр не передается во время URL маршрутизации
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "CreateChildRoute",
url: "Admin/MaterialPaymentRequestSbuItem/CreateChild/{parentId}",
defaults: new { controller = "MaterialPaymentRequestSbuItem", action = "CreateChild", parentId = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new[] {"ProjectManager.Controllers"}
);
Однако, когда я называю: http://localhost:46813/Admin/MaterialPaymentRequestSbuItem/CreateChild/23
Нулевое значение передается контроллеру:
public ActionResult CreateChild(int? parentId){
.....
}
Но вызов http://localhost:46813/Admin/MaterialPaymentRequestSbuItem/CreateChild?parentId=32
работает без проблем и передает параметр, как он должен быть.
P.S. Admin
- это определенная область в моем приложении. Вот вывод маршрута Debugger для http://localhost:46813/Admin/MaterialPaymentRequestSbuItem/CreateChild?parentId=2
:
Код, который вы показали, отлично работает. Как вы генерируете URL-адреса? –
@StephenMuecke Я сгенерировал выше URL-адреса вручную, чтобы протестировать приложение, однако есть ли другие методы тестирования? Я попробовал RedirectToAction и т. Д., Который будет создавать URL-адреса в этом шаблоне ('.../CreateChild? ParentId = 32') в качестве примера:' @ Html.ActionLink («Создать новый элемент», «CreateChild», новый {parentId = @ ViewBag.ParentID}, null) ' – VSB
Это должно быть' @ Html.ActionLink («Создать новый элемент», «CreateChild», «MaterialPaymentRequestSbuItem», new {parentId = @ ViewBag.ParentID}, null) 'который будет работать нормально и генерировать' ..../Admin/MaterialPaymentRequestSbuItem/CreateChild/23'. Если это не так, то есть еще что-то еще, что вы не показали нам причинения проблемы. –