0

以下の私の要件をご覧ください。

次の条件で、ユーザーをアカウント/ログイン ページにリダイレクトしたいと考えています。

  1. ユーザーがたとえばhttp://example.com/Customer1と入力した場合

customer1 が customer の場合、これを 1 つの構成テーブルに保持しています。ここで、customer1 の接続文字列を保持しています。

したがって、基本的に customer1 これがデータベースに存在するかどうかを確認してから、/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();
}

上記のコードでは、ユーザーが入力したサブドメインが一致するかどうかを確認してから、EDMX 接続を変更しますが、ログイン ページの顧客名にリダイレクトする方法を確認しています。

customer1/アカウント/ログイン

4

1 に答える 1

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


        }
于 2014-02-14T19:28:04.760 に答える