Это кажется невозможным, но я все равно спрошу.
Вот сценарий
У меня есть MVC 3 View, который загружает 3 частичных представления, одно для входа в систему, одно для регистрации и одно для входа в систему OpenID.
Первые 2 прекрасно работают с Ajax; третье представление использует ajax для публикации на моем openid контроллере, где я делаю магию DotNetOpenAuth
Пример:
var response = authenticationRequest.RedirectingResponse;
if(response.Status == HttpStatusCode.Redirect)
{
return Json(new {redirectUrl=response.Headers[HttpResponseHeader.Location] });
}
Я делаю перенаправление с возвращенного Json с контроллера, на который отправляется форма входа в OpenId, "помните, что это сообщение через ajax". Поэтому после перенаправления я хотел бы заменить содержимое div на начальное частичное представление входа openid новым представлением, основанным на том, что происходит после перенаправления на провайдера, пользователь входит в систему, и я получаю ответ обратно в свой actionMethod , Например, я проверю свою базу данных, чтобы узнать, есть ли у меня учетная запись для этого открытого идентификатора. Если я этого не сделаю, я бы хотел представить пользователю частичное представление с некоторыми основными вопросами и т. Д. И позволить ему добавить учетную запись с открытым идентификатором.
Похоже, что это невозможно, поскольку перенаправление лишает вас возможности вернуть данные на исходную страницу.
Есть идеи?
Обрабатывать пули в соответствии с запросом:
- Основной вид отображает частичный вид с формой
- Форма в частичном представлении делает ajax-запись в ActionMethod в контроллере
- ActionMethod в контроллере возвращает Json с redirectUrl
- Функция обратного вызова OnSuccess читает результат json и выполняет перенаправление на стороне клиента в redirectUrl
- Пользователь входит в провайдера openid в перенаправленном местоположении
- Поставщик OpenId отправляет результаты обратно в тот же ActionMethod, который сгенерировал первоначальный результат Json redirectUrl
- Выполните поиск в БД по открытому идентификатору и верните частичное представление, если пользователь не найден, или войдите в систему, если пользователь найден.
Я хотел бы, чтобы идентификатор вида, которого не нашел пользователь, был загружен в исходный div, в котором была форма входа. Это не работает.