現在、ユーザーがパスワードを変更できる単純なログインアプリケーションを実行しています。ただし、@Html.ActionLink
パスワードの変更ページにリダイレクトされません。web.config の設定が原因だと思います。どうすれば修正できますか?
これが私のコードです。
Index.chtml (ログインページ)
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"> </script>
<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>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<h2>@ViewBag.Title</h2>
@using(Html.BeginForm())
{
@Html.LabelFor(login => login.Username)
@Html.TextBoxFor(login => login.Username)<br/>
@Html.LabelFor(login => login.Password)
@Html.PasswordFor(login => login.Password)<br/>
<input type="submit" value="Login" />
@Html.ActionLink("Change Password", "Index", "ChangePW")
@Html.ValidationSummary()
}
@ViewBag.Error
Web.config
<location>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="Content">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
をクリックした後の結果の HTML コードChange Password
:
<div>
<h2>BlueBerry Login</h2>
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"> </script>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<h2></h2>
<form action="/Login?ReturnUrl=%2fChangePW" method="post">
<label for="Username">User name: </label>
<input data-val="true" data-val-required="The User name: field is required." id="Username" name="Username" type="text" value="" />
<br/>
<label for="Password">Password: </label>
<input data-val="true" data-val-required="The Password: field is required." id="Password" name="Password" type="password" />
<br/>
<input type="submit" value="Login" />
<a href="/ChangePW">Change Password</a>
<div class="validation-summary-valid" data-valmsg-summary="true">
<ul>
<li style="display:none"></li>
</ul>
</div>
</form>
</div>
更新@Html.ActionLink
アプリケーションに入ったときに を
使用してみましたが、うまくいきました。それは本当に奇妙です...
更新 2
ログインコントローラーのコードは次のとおりです
public class LoginController : Controller
{
//
// GET: /Login/
#region Declarations
MembershipHelper _mem = new MembershipHelper();
#endregion
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(MasterUser user)
{
if (ModelState.IsValid)
{
if (_mem.ValidateUser(user.Username, user.Password)) //successful
{
FormsAuthentication.SetAuthCookie(user.Username, false);
user = _mem.LoggedUser;
Session["loggedUser"] = user;
return RedirectToAction("Index", "Home");
}
ModelState.AddModelError("",_mem.Status);
}
else
{
ModelState.AddModelError("", "User does not exist");
}
return View();
}
}