1

部分的なビューを含む kendo.window を開いています。[OK] をクリックしたら、変更したデータを保存し、ウィンドウを閉じてベース ページをリロードします。何らかの理由で、それは動作しません。部分ビューをフル ページとして開きます。

どうすればこれを修正できますか? 部分ビューがページとして開かないようにするには、何を返す必要がありますか?

ありがとう、

これが私がこれまでに持っているものです。

ベースページ:

<div id="windowBadgeIMGDiv" class="k-content">
    <div id="windowBadgeIMG" style="display:none">
</div>

<script type="text/javascript">
    function editDetails(id) {
        var windowBadgeIMG = $("#windowBadgeIMG");
        windowBadgeIMG.kendoWindow({
            modal: true,
            width: "950px",
            title: "Modify badge picture",
            content: {
                url: "/Home/BadgePicture",
                data: { id: id }
            },
            deactivate: function () {
            }
        });

        windowBadgeIMG.data("kendoWindow").center();
        windowBadgeIMG.closest(".k-window").css({ top: 100 });
        windowBadgeIMG.data("kendoWindow").open();
    }
</script>

部分的なビュー:

<%using (Html.BeginForm("BadgePicture", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "ImgForm", name = "ImgForm" }))
{ %>
    <input type="hidden" name="hdnBadgeId" id="hdnBadgeId" value="<%= Model.Id%>" />
    <table>
        <!--My editable fields go here-->
        <tr>
            <td style="padding-top: 20px;" align="center" colspan="4">
                <button id="btnSubmit" type="submit"><asp:Label runat="server" Text="<%$ Resources:Global, Update %>" /></button>
            </td>
        </tr>
    </table>
<%} %>

コントローラ

    [HttpPost]
    public PartialViewResult BadgePicture(string[] hdnBadgeId, HttpPostedFileWrapper Image1)
    {
        //Do some work with the data
        return PartialView(model);
    }

更新:私の解決策

PartialView の代わりに View に置き換えて使用しmodal: true,ますiframe: true,content: "/Home/BadgePicture/" + id,送信時にウィンドウを閉じるには: 外部コンテンツ内からウィンドウを閉じる

4

2 に答える 2

3

保存ボタンをクリックすると、結果としてデータが投稿され、応答がページ全体としてレンダリングされるということですか? コードを読むと、フォームの投稿が原因で発生するように見えます。

ブラウザーはビューを投稿の結果に置き換えます。投稿の結果が iframe に制限されるように、剣道ウィンドウで iframe を使用するようにしてみてください。ただし、それを行う場合、パーシャルは独自の iframe でレンダリングされるため、パーシャルではなく完全な HTML ページにする必要があります。http://docs.kendoui.c​​om/api/web/window#configuration-iframe

または、フォーム ポストを使用する代わりに AJAX でウィンドウ データをポストしてから、剣道ウィンドウのコンテンツを置き換える必要があります。

于 2013-11-06T00:00:23.137 に答える
0

まったく同じ問題ではないかもしれませんが、私にとってこれは実際にはこの問題の表れでした.Kendo ウィンドウの AJAX リクエストは実際にはキャンセルされ、代わりにリンク URL をたどっていました。このインスタンスでは剣道ウィンドウのエラー イベントも呼び出されておらず、ブラウザがナビゲートされているリンクを実際に設定していなかったため、追跡が困難でした。

私の場合、カスタム グリッド ツールバー ボタンからウィンドウを作成していました。

@(Html.Kendo().Grid<SomeViewModel>()
    .Name("grid")
    .ToolBar(t =>
    {
        t.Custom().Text("Add Item").HtmlAttributes(new { id = "AddItem" });
        // would also get the current page as a default URL
    })

    ...
)

次に、JavaScript 経由でバインドします。

$("#AddItem").click(function (e) {
    openNewKendoWindow(); // would open link URL in whole page
});

修正はe.preventDefault();クリック ハンドラーに追加することでしたが、明らかreturn false;に同様に機能します。

$("#AddItem").click(function (e) {
    openNewKendoWindow();
    e.preventDefault();
});

これにより、属性の内容を無視して剣道ウィンドウを開くことができhrefます。

于 2014-06-12T15:35:01.500 に答える