デフォルトでは表示されない「ボタン」と KendoUI ウィンドウを含むビューがあります。
Index.cshtml :
@(Html.Kendo().Button()
.Name("btnLogin")
.Content("Login")
.Events(e => e.Click("LoginBtn")))
@{Html.Kendo().Window()
.Name("windowLogin")
.Title("Login")
.Content("loading user info...")
.LoadContentFrom("Login", "Account")
.Modal(true)
.Visible(false)
.Iframe(true)
.Draggable()
.Resizable()
.Render();
}
ボタンをクリックすると、フォームを含むモーダル ウィンドウが開きます。「ログイン」アクションは、完全なフォームを含むビューを返します。
ログイン.cshtml :
<h2>Login Details</h2>
@Html.ValidationMessage("error")
@using (Html.BeginForm("Login", "Account", FormMethod.Post))
{
<table>
<tr>
<td>
@Html.Label("UserName: ")
</td>
</td>
<td>
@Html.TextBoxFor(user => user.UserName)
</td>
<td>
@Html.ValidationMessageFor(user => user.UserName, "Enter Name")
</td>
</tr>
<tr></tr>
<tr>
<td>
@Html.Label("Password: ")
</td>
<td>
@Html.PasswordFor(user => user.Password)
</td>
<td>
@Html.ValidationMessageFor(user => user.Password, "Enter Password")
</td>
</tr>
<tr></tr>
<tr>
<td>
<input type="submit" value="Login" />
</td>
<td>
<input id="CancelButton" type="button" value="Cancel" />
</td>
</tr>
</table>
}
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
AccountController.cs :
[HttpPost]
public ActionResult Login(User user)
{
var userDetails = ExecuteQueries.GetUser(user);
if (userDetails != null)
{
Session["userName"] = userDetails.UserName;
//FormsAuthentication.RedirectFromLoginPage(user.UserName, true);
}
else
{
ModelState.AddModelError("error", "UserName or Password is incorrect");
}
return View("Login");
}
私が直面している問題は、モーダル ウィンドウを閉じて親画面をリロードできないことです。ログインに成功すると、同じモーダル ウィンドウで新しいウィンドウが開きます。モーダル ウィンドウを閉じて親画面を更新する必要があります。