2011-08-18 92 views
2

我试图使用不同的登录页面来修改适合移动设备,主要是iPhone/Android的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子句来实现action方法),但是当我尝试登录时,我只是再次访问相同的页面,但奇怪的是没有字段...

我需要做些什么才能使其工作?

回答

2

我没有看到任何地方,你实际上是检查,看它是否是一个移动设备重新定向:

if (Request.Browser.IsMobileDevice){ } 
+0

好了,根据微软网页我提到,URL字符串检查“/手机/”是应该做的...... – Anders

+0

的检查“/手机/”是好的,但移动浏览器不会自动添加到您的请求URL。你必须先检查它是否是移动浏览器,然后将“Mobile”添加到URL中。再次阅读文档。 “Request.Browser.IsMobileDevice()”调用是您实际检查请求是否来自移动浏览器的地方。我确信它只是在http请求中检查用户代理字符串。 – feathj

+0

好的,谢谢,无论如何,这可能会派上用场,但它仍然不是我的实际问题的答案。就像我刚才提到的那样,我已经将if测试注释掉了,只是为了尝试这些方法,即使我使用了正确的GET方法,我也不知道如何从那里继续。它似乎卡在那里。 – Anders

3

你一直在移动领域的帐户控制?更好的做法是使用移动区域来保留所有移动网站的内容并将授权重定向到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(); 
    }