asp.net mvc3 RouteToAction () никуда меня не ведет - PullRequest
2 голосов
/ 21 мая 2011

Я использую бритву jquerymobile и asp.net MVC3. Я немного новичок в этом, но, выяснив, у меня есть очень простая таблица маршрутов, с маршрутом игнорирования ресурсов .axd и маршрутом по умолчанию:

routes.MapRoute(
 "Default",
 "{controller}/{action}/{id}",
 new { controller = "Home", action = "Index", id = "", UrlParameter.Optional }
);

У меня есть ссылка действия, которая работает на странице .ascx:

@Html.ActionLink("Log On", "LogOn", "Account", null, new { @class = "ui-btn-right" })

Теперь, когда я попадаю на страницу входа в систему и завершаю проверку учетной записи, мне нужно отправить их на домашнюю страницу, /Home/Home, которая работает, если я набираю ее в адресной строке, но я не могу показаться чтобы мой редирект работал в контроллере аккаунта: return RedirectToAction("Home", "Home");

Спасибо за любую помощь!

Ответы [ 3 ]

3 голосов
/ 15 июля 2011

Похоже, вы отправляете свою форму из / Account / LogOn через ajax.Это означает, что когда вы return RedirectToAction("Home", "Home");, страница не изменится.Так что вам просто не нужно использовать ajax в форме отправки.Если мои предположения неверны, пожалуйста, опубликуйте больше кода, чтобы мы могли понять, в чем проблема.

Из документации видно, что jQuery mobile обрабатывает сообщения через ajax автоматически.Чтобы предотвратить это, добавьте атрибут data-ajax="false" к элементу формы.Документация здесь: http://jquerymobile.com/test/docs/forms/forms-sample.html

1 голос
/ 21 июля 2011

Вы можете проверить запрос ajax в контроллере:

if(Request.IsAjaxRequest())
{
  //send json object and do navigate in client
  return Json(new {IsLogged = true});
}
else
{ 
  //send redirect html code to browser
  return RedirectToAction("Home", "Home");
}

и на стороне клиента проверьте результат json, если вы отправляете форму с помощью jQuery ajax. Я не использую jquerymobile, поэтому я не знаю, как это работает на стороне клиента.

1 голос
/ 21 июля 2011

Учитывая то, что написано в документации , не могли бы вы поместить свой код в элемент формы и установить для его свойства action значение / Account / LogOn? Для этого вам, возможно, придется преобразовать свой ActionLink в кнопку.

...