Zapomniałem hasła strona, na której użytkownik wpisuje nazwę użytkownika i klika przycisk „Weryfikuj”, aby sprawdzić, w której grupie się znajduje. Na podstawie grupy musimy wyświetlić różne widoki częściowe (na razie powiedzmy, że jest to numer telefonu) w Strona. Po wypełnieniu prawidłowych danych, w przypadku sukcesu przekieruję na nową stronę, na której zaktualizuje swoje hasło, w przypadku niepowodzenia muszę wyświetlić komunikat o błędzie.

Teraz mam trudności z napisaniem kodu do podświetlenia.

Oto kod funkcji ajax Jquery, która uruchamia się po kliknięciu przycisku przesyłania

person = {UserName: $("#UserName").val(), Phone: $("#Phone").val() }
$.ajax({
            type: 'POST',
            url: '@Url.Action("ForgotPassword", "Customer")',
            data: person,
            dataType: 'json',
            success: function (data) {
                //This is the place I need help
                if(data.IsDataValid){
                  // redirect to new page passing the model object
                }
                else{
                    //Show an error message without hiding the div
                }
            },
            failure: function () {                   
            }
        });

Oto kod Działanie kontrolera

    [HttpPost]
    [ValidateInput(true)]
    public ActionResult ForgotPassword(RegisterModel model)
    {            
        if (Request.IsAjaxRequest())
        {
            Here is the logic which validates the user
            return Json(new { regmodel = RegistrationModel })
        }
    //If it is not ajax call I want to return the view
        if (isUsergroup1 == true)
        {
            return View("View1", RegistrationModel );
        }
        else if (isUsergroup2 == true)
        {
            return View("View2", RegistrationModel );
        }
        else
        {
            return View();
        }

    }

Proszę pomóż. Z góry dziękuję

1
Bob 29 wrzesień 2012, 04:07

2 odpowiedzi

Najlepsza odpowiedź

Tak właśnie musimy zrobić. Nie możemy przekazać modelu, możemy jedynie przekazać parametry w przekierowaniu łącza. I musimy użyć link.replace, ponieważ możesz przekazać zmienne bezpośrednio do Url.Action

person = {UserName: $("#UserName").val(), Phone: $("#Phone").val() }
 $.ajax({
        type: 'POST',
        url: '@Url.Action("ForgotPassword", "Customer")',
        data: person,
        dataType: 'json',
        success: function (data) {
            //This is the place I need help
            if(IsDataValid){
              var link = "@Url.Action("Actionname", "Controllername", new { username = "1", phone ="2" })";
                   link = link.replace("1", data.username);
                   link = link.replace("2", data.phone);
                   alert(link);
                   window.location.href= link ;
            }
            else{
                //Show an error message without hiding the div
            }
        },
        failure: function () {                   
        }
    });
1
Bob 30 wrzesień 2012, 19:43

Odnosząc się do części twojego pytania, na którą można teraz odpowiedzieć:

if(IsDataValid){
  // redirect to new page(
}
else{
    //Show an error message without hiding the div
}

Aby przekierować, użyj window.location.replace('url to new page');.

W przypadku części „komunikat o błędzie” albo użyłbym jQuery UI do wyświetlenia okna dialogowego, albo miał ukryty div, do którego wstawiasz komunikaty o błędach, być może tak:

$('#errors').html(data.Errors).show();

Zakłada się, że masz jakąś właściwość o nazwie Errors, która zawiera komunikaty sprawdzania poprawności RegistrationModel.

0
Tieson T. 29 wrzesień 2012, 22:08