2014-02-14 6 views
0

Пожалуйста, см. Мое требование ниже.Как установить MapRoute в MVC

Я хочу перенаправить пользователя на страницу учетной записи/входа в систему со следующими условиями.

  1. Если типы пользователей, например http://example.com/Customer1

Где customer1 является клиентом я держу это в одной конфигурации таблицы, где я, имеющий строку подключения для customer1

поэтому в основном customer1 мне нужно проверить, если это существует в db, а затем перенаправляется на страницу/Customer1/account/login.

Пожалуйста, дайте мне знать, если это возможно или нет? Если да, то как я могу установить или проверить этот map.route?

public ActionResult Login() 
     { 
      string CurrentURL = Request.Url.AbsoluteUri; 

       var subdomain = CurrentURL.Split('/')[5]; 
       var getDB = (from c in dbcontext.Configuration 
          where c.CustomerName == subdomain 
          select new 
           { 
            DBName = c.CustomerDBName, 
            DBUserName = c.CustomerDBUserName, 
            DBPassword = c.CustomerDBPassword, 
            DBDataSource = c.CustomerDBDataSource, 
            DBConnectionString = c.CustomerDBConnectionStringName 
           }).FirstOrDefault(); 

       dbcontext.ChangeDatabase(initialCatalog: getDB.DBName, 
         userId: getDB.DBUserName, 
         password: getDB.DBPassword, 
         dataSource: getDB.DBDataSource, 
         configConnectionStringName: getDB.DBConnectionString); 

      return View(); 
} 

В коде выше я просто проверить, что если поддомен entred пользователем является macthing то chnage соединение EDMX, но теперь, как перенаправить на страницу входа в систему имя клиента.

customer1/Account/Войти

+0

у вас есть папка/область чего-то с клиентом1, у которого есть действие учетной записи/входа, кроме учетной записи/входа по умолчанию? что представляет клиент1? – Miller

+0

Спасибо за ваш ответ Миллер. см. предположим, что если кто-то набирает этот exmaple.com/customer1, тогда мне нужно проверить мой db, если клиент1 присутствует или db или нет. если да, тогда мне нужно взять строку соединения из этой таблицы и вам нужно перенаправить пользователя на exmaple.com/customer1/account/login, где учетная запись является контроллером, а логин - это представление? – user1417429

+0

Чтобы конечный пользователь сначала зашел в систему здесь example.com/cusotmer1/account/login, тогда, если логин в порядке, то если у меня есть перенаправление на exmaple.com/customer1/home/index. – user1417429

ответ

0

то, что вам нужно сделать, это

добавить контроллер Клиенту

public class CustomerController : Controller 
{ 
    // 
    // GET: /Customer/ 

    public ActionResult Default(string id) 
    { 

     if (string.IsNullOrEmpty(id)) 
      return View("SiteIndex"); //default View for you site like home/index here 

     //put your code to check the customer in the DB here 
     return View(); 
    } 

} 

в Route.Config. добавьте маршрут для клиента до значения по умолчанию.

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
       name: "CustomerDefault", 
       url: "{id}", 
       defaults: new { controller = "Customer", action = "Default", id = UrlParameter.Optional } 
     ); 

      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 


     } 
+0

Hi Miller, Спасибо за ваше время. URL-адрес клиента работает нормально, но любой RedirectToAction («Index», «Home») ничего не делает. Я имею в виду, что он не перенаправляет. Но если я запускаю URL-адрес вручную, как localhost/Home/Index, он отлично работает и переходит в представление Index. Появился ли у карты маршрут? – user1417429

+0

мой плохой !! обновил ответ. – Miller

+0

Спасибо Миллер. Я думаю, что что-то не так с Map Route.Фактически я просто понял, что как только я нахожусь на первом представлении клиента, а затем вызвал RedirectToAction («Index», «Home»), снова перенаправляется на Customer/Default, поэтому кажется, что что-то не так с Map Route. – user1500194

Смежные вопросы