Я не совсем уверен, что это лучший способ выразить это, однако у меня возникли небольшие проблемы с определением того, как этого добиться. У меня есть страница с формой для редактирования информации о пользователе.
Сама страница находится на / User / Edit / 1234, где 1234 - номер сотрудника.
На этой странице есть ссылка для сброса пароля, которая открывает следующее диалоговое окно jQuery UI.
<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>
То, что я хотел бы сделать, это отправить эту форму в действие (в данном случае / user / reset / 1234) и вернуть результат (сообщение об успешном завершении, неудаче или проверке) в диалоговое окно, не покидая страницу .
Код действия, которое у меня есть, будет делать то, что я выполняю, если я отправляю обратно на то же действие, что и страница, но это не так, и я застрял здесь.
Код, который у меня есть:
<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
Так как мне перейти от этого к тому, чего я на самом деле пытаюсь достичь? Я рассматривал JSON как решение, но мои знания об этом довольно ограничены.
Любая помощь очень ценится.