RedirectToAction не меняет URL - PullRequest
       4

RedirectToAction не меняет URL

3 голосов
/ 17 января 2012

1. У меня есть домашняя страница (Home / Index). Здесь вы выбираете язык. Вот URL-адрес: "localhost:xxxx".

2. После выбора языка, следующая страница входа (учетная запись / индекс) Вот URL-адрес: "localhost:xxxx/Account/Index?language=en-US".

3. При вводе данных (имя пользователя / пароль) и нажатии кнопки входа в систему происходит перенаправление на пользователя / индекс, но URL остается в учетной записи / входе

Моя форма:

<% using (Html.BeginForm("LogOn", "Account")) { %>
<div data-role="fieldcontain" class="ui-hide-label">
  <label for="username">Username:</label>
  <%: Html.TextBoxFor(m => m.Username, new { placeholder = "Username" })%>                      
</div>
<div data-role="fieldcontain" class="ui-hide-label">
  <label for="password">Password:</label>
  <%: Html.PasswordFor(m => m.Password, new { placeholder = "Password" })%>                 
</div>
<fieldset class="ui-grid-a">
  <div class="ui-block-a"><button type="reset" data-theme="d">Reset</button></div>
  <div class="ui-block-b"><button type="submit" data-theme="b">Log On</button></div>
</fieldset>             
<% } %>

Контроллер аккаунта:

[HandleError]
public class AccountController : Controller
{        
  public ActionResult Index(string language = "es-Es")
  {
    return View();
  }

  [HttpPost]
  public ActionResult LogOn(UserModel user)
  {
    FormsAuthentication.SetAuthCookie(user.Username, false);
    return RedirectToAction("Index", "User");
  }

  public ActionResult LogOff()
  {
    return View();
  }
}

Global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  routes.MapRoute(
                  "Default", // Route name
                  "{controller}/{action}/{id}", // URL with parameters
                 new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
                 );
}

Как сделать так, чтобы URL был: localhost: xxxx / User / Index?

Ответы [ 4 ]

5 голосов
/ 17 января 2012

В вашем Account/Index.cshtml представлении замените:

@using (Html.BeginForm())
{
    ...
}

на:

@using (Html.BeginForm("LogOn", "Account"))
{
    ...
}

, чтобы вы вызывали действие LogOn на контроллере учетной записи при отправке формы ине действие Index (которое просто возвращает то же представление).

4 голосов
/ 17 января 2012

В вашем логоне используйте постоянный редирект:

[HttpPost]
public ActionResult LogOn(UserModel user)
{
   FormsAuthentication.SetAuthCookie(user.Username, false);
   return RedirectToActionPermanent("Index", "User");
}
0 голосов
/ 23 ноября 2012

Если вы используете jQuery mobile, убедитесь, что для атрибута data-url задан правильный URL-адрес на целевой странице:

<div id="my-page" data-role="page" data-url="/myurl">

Это решает проблему.

0 голосов
/ 08 апреля 2012

Я знаю, что на этот вопрос уже был дан ответ, но было бы проще, если бы вы использовали RedirectToRoute, вместо RedirectToAction, оказалось, что RedirectToRoute вызывает изменение URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...