こんにちは、.NET MVC 3 を初めて使用します
ログインしたユーザーのパスワードを変更するコントローラーがあります。
public ActionResult ChangeUserPassword(string userId)
{
ChangePasswordModel model = new ChangePasswordModel() { Id = userId };
return View(model);
}
[HttpPost]
public ActionResult ChangeUserPassword(ChangePasswordModel model)
{
if (ModelState.IsValid)
{
// ChangePassword will throw an exception rather
// than return false in certain failure scenarios.
bool changePasswordSucceeded = true;
try
{
changePasswordSucceeded = userDetailsService.ChangeUserPassword(model.Id, model.OldPassword, model.NewPassword);
}
catch (Exception)
{
changePasswordSucceeded = false;
}
if (changePasswordSucceeded)
{
return View("ChangePasswordSuccess");
}
else
{
ViewBag.Message = "The current password is incorrect or the new password is invalid.";
ModelState.AddModelError("", "The current password is incorrect or the new password is invalid.");
}
}
// If we got this far, something failed, redisplay form
return View();
}
public ActionResult ChangePasswordSuccess()
{
return View();
}
ビューは次のとおりです。
@model MVCApp.Models.ChangePasswordModel
@{
ViewBag.Title = "Change User Password";
}
<h2>Change User Password</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Change Password</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.LabelFor(model => model.OldPassword)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.OldPassword)
@Html.ValidationMessageFor(model => model.OldPassword)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.NewPassword)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.NewPassword)
@Html.ValidationMessageFor(model => model.NewPassword)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ConfirmPassword)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ConfirmPassword)
@Html.ValidationMessageFor(model => model.ConfirmPassword)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
[保存] ボタンをクリックしても、何も起こりません。私が何か間違ったことをしている場合、またはエラーをキャッチして表示する方法を教えてもらえますか?
編集:フォームを送信しても、デバッガーはエラーを検出しません
編集:(関連性がないため、写真は削除されました)
コントローラーを変更しました:
if (changePasswordSucceeded)
{
return View("ChangePasswordSuccess");
}
else
{
return View("ChangePasswordFailed");
}
しかし、それは私をどこにもリダイレクトしません...何が起こるのか本当にわかりません
編集:モデルは空だと思います