2014-02-14 3 views
0

아래의 내 요구 사항을 확인하십시오.MVC에서 MapRoute를 설정하는 방법

다음 조건으로 계정/로그인 페이지로 사용자를 리디렉션하고 싶습니다.

  1. 예를 들어 사용자 유형 http://example.com/Customer1
내가

그래서 기본적으로 나는 경우 확인해야 1 고객 1 고객에 대한 연결 문자열을 데 하나 개의 설정 테이블이 유지하고 1 고객은 고객이

이것은 db에 존재하고/Customer1/account/login 페이지로 리디렉션됩니다.

가능 여부를 알려주십시오. 그렇다면이 맵을 설정하거나 확인하는 방법은 무엇입니까?

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 경우 다음 페이지 고객 이름을 로그인 리디렉션하는 방법을 지금 EDMX 연결을 chnage하지만 것을 확인하고있다.

1 고객/계정/로그인

+0

기본 계정/로그인 이외의 계정/로그인 작업이있는 고객 1의 폴더/영역이 있습니까? 고객 1은 무엇을 대표합니까? – Miller

+0

답장을 보내 주셔서 감사합니다. 어떤 사람이이 exmaple.com/customer1을 입력하면 customer1이 db에 있는지 없는지를 확인해야합니다. 그렇다면 그 테이블에서 연결 문자열을 가져 와서 사용자에게 리다이렉트해야합니다 (exmaple.com/customer1/account/login). 여기서 계정은 컨트롤러이고 로그인은보기입니까? – user1417429

+0

최종 사용자가 먼저 여기에서 로그인하십시오. example.com/cusotmer1/account/login 그러면 로그인이 정상이면 exmaple.com/customer1/home/index로 리디렉션됩니다. – user1417429

답변

0

당신이해야 할 것은

가 Route.Config에서 컨트롤러 고객에게

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(); 
    } 

} 

을 추가합니다. 고객에 대한 경로를 기본 경로 앞에 추가하십시오.

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

안녕하세요, 귀하의 시간을 주셔서 고마워면 나는 chaging 계속됩니다 contoller로 customer1을 유지할 수 없기 때문에. Customer URL은 정상적으로 작동하지만 RedirectToAction ("Index", "Home")은 아무 것도하지 않습니다. 리디렉션을하지 않는 것입니다. 하지만 로컬 호스트/홈/인덱스 수동으로 URL을 실행하면 잘 작동하고 인덱스보기로 이동합니다. 지도 경로에 문제가 있습니까? – user1417429

+0

내 나쁜 !! 답변을 업데이트했습니다. – Miller

+0

밀러 감사합니다. Map Route에서 잘못된 점이 있다고 생각합니다.사실 나는 처음 고객 뷰를보고 RedirectToAction ("Index", "Home")을 다시 호출하면 Customer/Default로 리디렉션되므로 Map Route에 문제가있는 것으로 나타났습니다. – user1500194

관련 문제