1

デフォルトでは表示されない「ボタン」と 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");
    }

私が直面している問題は、モーダル ウィンドウを閉じて親画面をリロードできないことです。ログインに成功すると、同じモーダル ウィンドウで新しいウィンドウが開きます。モーダル ウィンドウを閉じて親画面を更新する必要があります。

4

1 に答える 1

2

window.Close() を呼び出すのと同じくらい簡単です。このスクリプトは、私の「Kendo Windowed」ビュー内にあります。ビューを返す前にログインに成功したら、モデルのプロパティをtrueまたは何かに設定するだけです。Model.CloseWindow = true;このコードをView Engineに入れます

@if (Model.CloseWindow == true)
{
<script>     
 // close the popup
var w = window.parent.$("#createManualProposalWindow").data("kendoWindow");
w.close();

</script>
}

ウィンドウの定義方法は次のとおりです。

@(Html.Kendo().Window()
.Name("createManualProposalWindow")
.Title("Manual Proposal Details")
.Draggable(true)
.Resizable()
.Scrollable(false)
.Width(880)
.Height(650)
.Visible(false)
.Iframe(true)
.Modal(true)
.Events(e => e            
    .Close("ManualWindow_close"))  
 )

close イベントが表示されます。そのイベント内で、親ページの更新を処理できます。

function ManualWindow_close() {         
     var aggGrid = $("#agg_grid").data("kendoGrid");  
     aggGrid.dataSource.read();

     var grid = $("#grid").data("kendoGrid");
     grid.dataSource.page(1);

     refreshGetContractTotals();

 }
于 2014-03-10T15:03:31.313 に答える