Je ne suis pas tout à fait sûr si c'est la meilleure façon de le dire, cependant, j'ai un peu de mal à savoir comment atteindre. Ce que j'ai est une page avec un formulaire pour éditer les détails d'un utilisateur.Formulaire de dialogue jQuery UI et ASP.NET MVC
La page elle-même se trouve sur/User/Edit/1234 où 1234 est le numéro d'employé. Sur cette page se trouve un lien de réinitialisation du mot de passe qui ouvre la boîte de dialogue jQuery UI suivante.
<div id="dialog-confirm" title="Are you sure?">
<form name="passReset" id="passReset" action="/User/Reset/<%=Html.ViewData("EmployeeNumber")%>" method="post">
<div id="reset1"><%=Html.ViewData("Name")%>'s password will be reset to 11111. You need to notify them that
they will need to change their password immediately or the account will be locked out. <br /> <br />
If you are sure you wish to proceed. Type the word <b>"YES"</b> in the box below and click OK.
<div align="center">
<%=Html.ValidationMessage("confirmResetText")%>
<input type="text" id="confirmResetText" style="width: 45px;"/><input type="submit" value="OK" />
</div>
</div>
</form>
</div>
Ce que je voudrais faire est de soumettre ce formulaire à une action (en l'occurrence/utilisateur/reset/1234) et retourner le résultat (réussite, échec ou un message de validation) à la boîte de dialogue sans que l'utilisateur jamais quitter la page.
Le code de l'action que je possède ferait ce que je veux si je revenais à la même action que la page, mais je ne le suis pas, et c'est là que je suis coincé.
Le code que j'ai est:
<AcceptVerbs(HttpVerbs.Post)> _
Function Reset(ByVal employee As String, ByVal collection As FormCollection)
If ModelState.IsValid Then
If collection("confirmResetText") <> "Yes" Then
ModelState.AddModelError("confirmResetText", "You didn't enter 'YES'.")
End If
'if data doesn't pass all rules, take them back to the form
If (Not ModelState.IsValid) Then
Return View(collection)
End If
ModelState.SetModelValue("confirmResetText", New ValueProviderResult(ValueProvider("confirmResetText").AttemptedValue, collection("confirmResetText"), System.Globalization.CultureInfo.CurrentCulture)) 'First Name
Dim myArea = (From a In db.secUserInfos _
Where a.EmployeeNumber = User.Identity.Name.ToString).SingleOrDefault
Dim uEditable As secUserInfo = gsecRepository.CheckIfUserCanBeEdited(employee, myArea.AreaID).SingleOrDefault
'check if user can be edited by you.
If uEditable Is Nothing Then
Return Redirect("/Home")
Else
Try
db.aspnet_Membership_SetPassword("/", employee, "11111", "11111", DateTime.Now, 0)
Catch ex As Exception
Response.Write(ex.Message)
End Try
Return Redirect("/User/Edit/" & employee)
End If
End If
End Function
Alors, comment dois-je aller de là à ce que je suis en train d'essayer d'atteindre? J'ai considéré JSON comme une solution, mais mes connaissances à ce sujet sont assez limitées.
Toute aide est grandement appréciée.
Je l'ai modifié pour que le mot de passe soit réinitialisé lorsque le formulaire est soumis. Cependant, je l'espère, car à chaque fois que le formulaire est soumis, je reçois une boîte de dialogue de téléchargement de fichier? – LiamGu
La réinitialisation du mot de passe doit être effectuée dans la méthode Confirmer l'action du contrôleur. – Thomas
Oui, j'ai fait un peu ce travail. Mais sur n'importe quelle forme de soumission je reçois un dialogue de téléchargement de fichier ouvert pour un fichier appelé le numéro d'employé (que j'ai passé à l'action du contrôleur) de la personne que j'essaye de modifier d'une application de type MIME/json. – LiamGu