ログアウトした後、自分のサイトのログイン ページにリダイレクトされるという問題があります。ただし、更新しない限り、ログイン ページの JavaScript はまったく実行されません。
次のリンクを使用して、アカウント コントローラーの LogOff アクションを呼び出しています (このコードは別のコントローラーにあります)。
@Html.ActionLink("Logout", "LogOff", "Account", null, new { data_icon = "gear", @class = "ui-btn-right" })
アカウント コントローラーの LogOff メソッドは次のようになります。ログアウト アクションからここに来たことをログイン ビューで検出するために、ログアウト パラメーターを渡します。
public ActionResult LogOff()
{
return Redirect(Url.Action("LogOn", "Account", new RouteValueDictionary(new { logout = true })));
}
firebugをチェックインすると、javascriptが
$(document).ready(function () { ... });
ログインページで使用されているものはまったく実行されません。
さらに、ログイン ページの URL は、私が期待していた "localhost:#####/Account/LogOn?logout=True" ではなく、"localhost:#####/Account/LogOff" と表示されます。
後でログイン フォームを送信しようとすると、「http://localhost:#####/?logout=True」という URL の空白のページが表示されます。
そのため、ページがJavaScriptでロードされない原因と、問題を解決する方法を知りたいです。
ありがとう!
更新: これが私の LogOn コントローラー メソッドです。
public ActionResult LogOn()
{
List<SelectListItem> cpList = new List<SelectListItem>();
// Retrieve the list of central points from web.config
NameValueCollection centralPoints = (NameValueCollection)ConfigurationManager.GetSection("CentralPointDictionary");
foreach (string cp in centralPoints)
cpList.Add(new SelectListItem { Text = cp as string, Value = centralPoints[cp] as string });
// Check for a cookie containing a previously used central point
string selectedCP = string.Empty;
if (ControllerContext.HttpContext.Request.Cookies["LastCentralPoint"] != null)
selectedCP = ControllerContext.HttpContext.Request.Cookies["LastCentralPoint"].Value;
else if (cpList.Count > 0)
selectedCP = cpList[0].Text;
LogOnModel loginModel = new LogOnModel { CentralPointsList = new SelectList(cpList, "Value", "Text", selectedCP) };
return View(loginModel);
}
そして私のビューの本体:
<div data-role="page" id="page">
<div data-role="header" data-position="inline">
<div id="languageContainer" data-role="fieldcontain">
<select id="languageSelect" data-mini="true" data-theme="b" data-overlay-theme="d" data-native-menu="false" data-inline="true">
<option value="English">English</option>
<option value="Français">Français</option>
</select>
</div>
</div><!-- /header -->
<div data-role="content" id="contentFrame" class="frame">
<div id="controlFrame">
@using (Html.BeginForm())
{
<div id="centralPoint" class="frame">
@Html.DropDownListFor(model => model.CentralPointAddress, Model.CentralPointsList, new { id = "centralPointSelect", name = "centralPoint", data_mini = "true", data_inline = "true", data_native_menu = "false" })
</div>
<div id="errorMsg">@Html.ValidationSummary()</div>
<div id="credentialsFrame" class="frame">
@Html.TextBoxFor(m => m.UserName, new { id = "userField", type = "text", name = "Username" })
@Html.PasswordFor(m => m.Password, new { id = "passField", type = "password", name = "Password" })
</div>
<input id="loginBtn" type="submit" value="Login" />
<div id="rememberMe" class="frame">
@Html.CheckBoxFor(m => m.RememberMe, new { @class = "custom", data_mini = "true" })
@Html.LabelFor(m => m.RememberMe)
</div>
<div id="forgotPassFrame">
<input id="forgotPass" type="button" data-mini="true" value="Forgot password?" />
</div>
@Html.HiddenFor(m => m.Encrypted, new { id = "encrypted", value = "false" })
}
</div>
@using (Html.BeginForm("SuccessfulLogin", "Account", FormMethod.Get, new { id = "successForm" }))
{
<input id="returnUrl" name="returnUrl" type="hidden" />
}
</div><!-- /content -->
</div><!-- /page -->