Что если вы попробуете это, используя ограничение маршрута.Получить список всех пользователей и ограничить выбранный маршрут, чтобы соответствовать записи в этом списке
public class UserPageConstraint : IRouteConstraint
{
public static IList<string> UserPageNames = (Container.ResolveShared<IUserService>()).GetUserPageNames();
bool _IsUserPage;
public UserPageConstraint(bool IsUserPage)
{
_IsUserPage = IsUserPage;
}
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (_IsUserPage)
return UserPageNames.Contains(values[parameterName].ToString().ToLower());
else
return !UserPageNames.Contains(values[parameterName].ToString().ToLower());
}
}
Затем в Global.asax.cs, настроить маршрут для пользователей следующим образом:
routes.MapRoute("UserHome", "{userPage}", new { controller = "UserPageController", action = "Index" }, new { userPage = new UserPageConstraint(true) });
Для этого вышеупомянутого маршрута в действии 'index' UserPageController в качестве параметра будет использоваться userPage.
Для других маршрутов, относящихся к домашней странице userPage, мы можем соответствующим образом добавить маршруты.Например, маршрут страницы пользователя подробно может быть добавлен следующим образом:
routes.MapRoute("UserHome", "{userPage}/mydetails", new { controller = "UserPageController", action = "Details" }, new { userPage = new UserPageConstraint(true) });
Вы можете попробовать это и посмотреть.