Перенаправление на мобильную страницу в Asp.Net MVC 3 - PullRequest
2 голосов
/ 19 августа 2011

Я пытаюсь использовать другую страницу входа для приложения Asp.Net MVC, которое модифицировано для мобильных устройств, в первую очередь iPhone / Android. Все, что мне в основном нужно, - это изменить вид входа в систему, потому что фактический контент находится в определенной части приложения, я не пытаюсь сделать мобильную версию всего сайта.

Итак, я попытался следовать этому: 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), но когда я пытаюсь войти в систему, я просто снова попадаю на ту же страницу, но странным образом без поля ...

Что мне нужно сделать, чтобы заставить это работать?

Ответы [ 2 ]

3 голосов
/ 20 октября 2012

Держите ли вы контроллер учетной записи в мобильной зоне? Лучше практиковаться в том, чтобы использовать мобильную область для хранения всего содержимого вашего мобильного сайта и перенаправления авторизации на 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();
    }
2 голосов
/ 19 августа 2011

Я нигде не вижу, чтобы вы проверяли, является ли это мобильное устройство для перенаправления:

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