0

ポップアップ ウィンドウからファイルをアップロードし、サーバー上のファイルを検証して、メッセージをクライアントに送り返します。このメッセージは、アップロード コントロールと同じポップアップ ウィンドウに表示される必要があります。(親ページにはありません) ポップアップと剣道アップロード コントロールに剣道ウィンドウを使用しています。アップロード コントロールを使用してファイルを同期的にアップロードしようとしています。アップロード コントロールはポップアップ ウィンドウにあります。JavaScript の「Success」イベントをアップロード コントロールにアタッチしましたが、Success イベントは発生しません。

問題:
1. アクション メソッドは JSON メッセージを返しますが、クライアントで Javascript の成功イベントが発生しないため、応答メッセージを処理できませんでした。(非同期操作でのみ発生しますか?)
2. 他のオプションとして、ModelState にメッセージを追加し、JSON の代わりにアップロード ビューを返すことができますが、ビューが返されると、アップロード ビューはポップアップとして表示されず、代わりに表示されます。ページとして、また URL が変更されます。
3. ポップアップ ウィンドウを閉じないように [OK] ボタンを構成するにはどうすればよいですか。

ここで選択できるのは非同期アップロードだけですか?

注:Telerikがここで報告したように、IEは進行状況バーを報告せず、選択したファイルは毎回サーバーにアップロードされないため、非同期オプションを使用していません。そのため、進行状況バーのアップロードを無効にしても問題が残ると考えています。しかし、この問題に関する詳細は見つかりませんでした。プログレスバーを無効にすると、IE 10,11 のすべてのファイルがアップロードされることを Kendo Upload が保証する場合は、非同期オプションの使用を検討してください。
4. プログレス バーを無効にするにはどうすればよいですか?

これはインデックスページ(親ページ)です

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
 }
<script src="~/Scripts/FileUpload.js"></script>

<script>
    $(document).ready(function () {
    var uploadwindow = $("#uploadwindow");
    $("#btnUploads").click(function (e) {
        uploadwindow.data("kendoWindow")
            .open()
            .center();
    });

});
</script>

<p/><p />
<button type="button" id="btnUploads">Show Window</button>

@(Html.Kendo().Window()
 .Name("uploadwindow") 
 .Title("Select the file to upload")
 .Draggable()
 .Resizable()
 .Width(600) 
 .Modal(true)
 .Visible(false)
 .LoadContentFrom("Upload", "FileUpload")
)

ポップアップウィンドウ

@using (Html.BeginForm("Upload", "FileUpload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @(Html.Kendo().Upload()
        .Name("file")
        .Multiple(false)
        .Events(x => x.Success("onSuccess"))
    )    
    <button type="submit">Ok</button>
}

FileUpload.js

function onSuccess(e) {
    //my custom method to show message
    ShowMessage(e.response.message);    
}

MVC コントローラー

public class FileUploadController : Controller
{   
    public ActionResult Index()
    {
        return View();
    }

    public ActionResult Upload()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase file)
    {
        return Json(new { message = "This is from server" }, "text/plain");

        //Option 2
        // if i return View here then it does not appear as popup instead it renders as page

        //ModelState.AddModelError("Some error");
        //return View();
    }
}
4

2 に答える 2

0

私は同じ問題を抱えていました.Kendo FileUploadの.EventにインラインJavaスクリプト関数を使用することで解決されます:

@using (Html.BeginForm("Upload", "FileUpload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@(Html.Kendo().Upload()
    .Name("file")
    .Multiple(false)
    .Events(x => x.Success(@<text>function(e) { /*your event handler code*/ )}</text>))
)    
<button type="submit">Ok</button>
}
于 2015-11-28T14:35:24.067 に答える