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ę
2 odpowiedzi
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 () {
}
});
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
.
Podobne pytania
Powiązane pytania
Nowe pytania
asp.net-mvc
Platforma ASP.NET MVC Framework to platforma i narzędzia aplikacji internetowych typu open source, które implementują wersję wzorca model-widok-kontroler (MVC) dostosowaną do aplikacji internetowych i opartą na technologii ASP.NET.