Я только начинаю с C # и ASP.NET, и у меня есть следующие вопросы.Я работаю с кодом, адаптированным из пары разных руководств, играющих с Northwind, и зашел так далеко.Список допустимых категорий в настоящее время жестко запрограммирован в виде строки, но я хотел бы найти CategoryName в базе данных, чтобы убедиться, что он существует.
Очевидно, что цель этого состоит в том, чтобы пользователи не просто набирали:
www.domain.com / Categories / AnyUrlWillWork и возвращали действительную страницу.
Также у кого-нибудь есть советы о том, как они решают проблемы с капитализацией, поскольку маршрутизация чувствительна к регистру?Например, Категории / напитки следует переслать до Категории / Напитки ?
Заранее благодарен за любую помощь и рад присоединиться к переполнению стека.
//Complex contraint class
public class EchoConstraint : IRouteConstraint
{
public readonly string[] ValidMessages = { "Beverages", "Produce", "Confections", "Seafood" };
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
string message = values["CategoryName"] as string;
return ValidMessages.Contains(message);
}
}
//Routes
RouteTable.Routes.MapPageRoute(
"Category Route", // Route name
"Categories/{CategoryName}", // Url pattern
"~/ShowProductsInCategory.aspx", // Physical file
true,
new RouteValueDictionary
{{"CategoryName", "Beverages"}}, //Sets default value if none is provided in URL
new RouteValueDictionary
{{"CategoryName", new EchoConstraint()}}
);