я есть область под названием Пользователей и следующие зарегистрированные маршруты в файле MembersAreaRegistration:Пользовательские маршрутизации в пределах области
context.MapRoute(
"Members_Profile",
"Members/Profile/{id}",
new { controller = "Profile", action = "Index", id = UrlParameter.Optional },
new string[] { "MyProject.Web.Mvc.Areas.Members.Controllers" }
);
context.MapRoute(
"Members_default",
"Members/{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "MyProject.Web.Mvc.Areas.Members.Controllers" }
);
Я хочу, чтобы иметь возможность сопоставить следующие адреса:
~/Members (should map ~/Members/Home/Index)
~/Members/Profile/3 (should map ~/Members/Profile/Index/3)
С этот маршрут регистрации все работает нормально. Тем не менее, я добавил следующий URL:
~/Members/Profile/Add
и я получил ошибку:
"The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Index(Int32)' in 'MyProject.Web.Mvc.Areas.Members.Controllers.ProfileController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter."
Я также хочу, чтобы иметь URL
~/Members/Profile/Edit/3
Что нужно изменить, чтобы иметь все эти URL-адреса работают нормально?
Я последовал за вашим советом с небольшой модификацией. Теперь маршруты, которые я использую, следующие (порядок важен): 1. «Члены/Профиль/Добавить» 2. «Участники/Профиль/{id}» 3. «Участники/{контролер}/{действие }/{id} " Я избавился от маршрута для редактирования, потому что он покрыт последним и самым общим. Спасибо за помощь. – Martin
Рад помочь. Пожалуйста, отметьте вопрос как ответ, чтобы другие могли его найти. – Clicktricity