2011-08-18 5 views
2

모바일 장치, 주로 아이폰/안드로이드에 맞게 수정 된 Asp.Net MVC 응용 프로그램에 다른 로그인 페이지를 사용하려고합니다. 기본적으로 필요한 것은 실제 내용이 응용 프로그램의 특정 부분에 있기 때문에 로그인보기를 수정하는 것입니다. 전체 사이트의 모바일 버전을 만들려고하지는 않습니다. Asp.Net MVC 3 모바일 페이지 리디렉션

그래서 나는이 따라 시도 : http://www.asp.net/learn/whitepapers/add-mobile-pages-to-your-aspnet-web-forms-mvc-application

을하지만 어떻게 모바일 버전의 로그온 작업 방법을 정확히 알고 충분히 인증을 모른다. 특정 모바일 게시물 작업이 누락 된 것처럼 느껴지고 리디렉션에서 전달 된 URL을 어떻게 처리해야하는지 이해할 수 없습니다. 여기까지 내가 무엇을 가지고있어 :

public ActionResult LogOn() 
     { 
      string returnUrl = Request.QueryString["ReturnUrl"]; 
      if ((returnUrl != null) && returnUrl.StartsWith("/Mobile/", 
             StringComparison.OrdinalIgnoreCase)) 
      { 
       return RedirectToAction("LogOnMobile", "Account", 
             new { ReturnUrl = returnUrl }); 
      } 
      return View(); 
     } 

     public ActionResult LogOnMobile(string returnurl) 
     { 
      return View(); 

     } 



     [HttpPost] 
     public ActionResult LogOn(LogOnModel model, string returnUrl) 
     { 
      if (ModelState.IsValid) 
      { 
       if (MembershipService.ValidateUser(model.UserName, model.Password)) 
       { 
        FormsService.SignIn(model.UserName, model.RememberMe); 
        if (Url.IsLocalUrl(returnUrl)) 
        { 
         return Redirect(returnUrl); 
        } 
        else 
        { 
         return RedirectToAction("Index", "Home"); 
        } 
       } 
       else 
       { 
        ModelState.AddModelError("", "The user name or password provided is incorrect."); 
       } 
      } 

      // If we got this far, something failed, redisplay form 
      return View(model); 
     } 

그리고 이것은 작동하지 않습니다. 나는 모바일 로그인 페이지를 얻는다. (또는 실제로 지금까지는 액션 메소드가 if 절을 주석 처리 함으로서 작동했다.)하지만 로그인을 시도 할 때 나는 단지 같은 페이지에 다시 도착하지만 이상하게도 필드 ...

이 기능을 사용하려면 어떻게해야합니까?

if (Request.Browser.IsMobileDevice){ } 

답변

2

난 당신이 실제로 다시 직접 할 수있는 모바일 장치가 있는지 확인하는 어디 표시되지 않는 이유는 무엇입니까? 더 나은 연습은 모바일 영역을 사용하여 모든 모바일 사이트 내용을 유지하고 인증을 AccountController로 리디렉션하는 것입니다.

public ActionResult Login() 
    { 
     string returnUrl = Request.QueryString["ReturnUrl"]; 
     if ((returnUrl != null) && returnUrl.StartsWith("/Mobile/", StringComparison.OrdinalIgnoreCase)) 
      return RedirectToAction("Login", "Account", new { Area = "Mobile", ReturnUrl = returnUrl }); 

     return ContextDependentView(); 
    } 
+0

글쎄, 내가 언급 된 마이크로 소프트 페이지에 따르면, 대한 URL 문자열 검사 "/ 모바일 /"그렇게하도록되어 ... – Anders

+0

을위한 체크 "/ 모바일 /"괜찮지 만 모바일 브라우저가 요청 URL에 자동으로 추가하지 않습니다. 먼저 모바일 브라우저인지 확인한 다음 URL에 '모바일'을 추가해야합니다. 문서를 다시 읽으십시오. "Request.Browser.IsMobileDevice()"호출은 요청이 모바일 브라우저에서 왔는지 여부를 실제로 확인하는 곳입니다. 나는 그것이 HTTP 요청에서 user-agent 문자열을 체크하고있을 것이라고 확신한다. – feathj

+0

그래, 고마워, 그때는 어쨌든 편리 할지도 모르지만, 아직도 내 실제 질문에 대한 대답이 아니야. 앞에서 언급했듯이 if 메소드를 주석 처리했습니다. 메소드를 시도해 보았습니다. 올바른 GET 메소드를 사용하더라도, 거기에서 계속 이동하는 방법을 알지 못합니다. 거기에 붙어있는 것 같습니다. – Anders

3

당신이 모바일 영역에서 계정 컨트롤러를 유지 마십시오