Привета Я пытаюсь определить путь маршрутизации для моего URL.This является то, что он выглядит так далеко:Определения маршрутизации для приложения
routes.MapRoute(
name: "Category",
url: "{controller}/DisplayBooksByCategory/{categoryId}/{pageNumber}",
defaults: new { controller = "Home", action = "DisplayBooksByCategory" }
);
Это работает, но это не совсем то, что я want.At момента мой URL выглядит примерно так:
http://localhost:51208/Home/DisplayBooksByCategory/7/1
То, что я хочу, чтобы иметь возможность заменить CategoryId с фактической категории name.The категории п AME не передается в качестве параметра к действию только categoryId.This мое действие:
public ActionResult DisplayBooksByCategory(int pageNumber, int categoryId)
{
int bookByCategoryCount = bookRepository.CountBooksByCategory(categoryId);
var entities = new BooksAndCategories
{
Books = bookRepository.GetBookByCategory(categoryId, pageNumber, numberOfBooksOnPage),
PageNumber = pageNumber,
LastPageNumber = (bookByCategoryCount/numberOfBooksOnPage) + 1,
NumberOfBooksPerPage = numberOfBooksOnPage,
Categories = categoryRepository.GetCategories(),
CurentPage = "ProductManager",
CurentCategory = categoryId
};
return View("DisplayBooksByCategory", entities);
}
Есть ли способ сделать это с помощью API маршрутизации без необходимости внесения изменений в действие?
Идентификатор категории останется в действии, что я не знаю, как я могу заставить URL-адрес выглядеть примерно так: http: // localhost: 51208/Главная/DisplayBooksByКатегория/Литература/1 – aleczandru
Хорошо, оставайтесь в действии, но кто передаст его действию? Не забывайте, что связующее устройство по умолчанию передает параметры в действие из того, что присутствует в URL-адресе запроса. Поэтому, если идентификатор категории не является частью вашего маршрута, как я уже сказал в своем действии, не ожидайте, что он автоматически будет передан в действие вашего контроллера. Помните, что вся информация, которую вы передали в своем запросе, является «Литература», которая не является целым числом. –
Понимание маршрутизации MVC хорошо, но если вы хотите что-то, что действительно может сэкономить ваше время, используйте библиотеку AttributeRouting из http://attributerouting.net/ (также на NuGet) – Prashant