3

WritingAnObjectがファイルをアップロードしている間、定期的に呼び出されるデリゲートメソッドがあります。MVCページのdiv(ProgressUpdate)をargs.PercentDone値で更新したいと思います。何かアイデアはありますか?ありがとう、

//デリゲートメソッド

private void displayProgress(object sender, ProgressArgs args)
{
            //Console.WriteLine(args.PercentDone); //I want to display args.PercentDone in the page
}

//コントローラ

[HttpPost]
public ActionResult WritingAnObject(MyViewModel bovModel)
{
    //DoSomeStuff which is cause calling displayProgress

    return RedirectToAction("ListingSomeInfo", "testpart");
}

//意見

<%using (Html.BeginForm("WritingAnObject", "testpart", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {%>   

    <%:Html.TextBox("catname") %>
    <input type="file" id="fileupload" name="fileupload" />
    <input type="submit" value="Upload" />
    <%} %>


<div id= “ProgressUpdate”&lt;/div>
4

1 に答える 1

0

これは、サーバー上の操作が完了している間に進行状況をユーザーに表示するために使用できる1つのアプローチです。(javascriptが必要です)

1)サーバー上でプロセスを開始するアクションを記述します。このメソッドは、セッション状態の進行状況値を更新する必要があります(これにより、ユーザーが実行している各セッションに固有になります)。

2)進行状況を返すためにクライアントが呼び出すことができるアクションを記述します。これにより、セッション状態の値が読み取られます。通常、このアクションは、適切な量で入力されたプログレスバーを含む小さなHTMLフラグメント、またはプログレス値を含むJSONオブジェクトのいずれかを返します。

3)クライアントから、jQuery.ajax()呼び出しを行って、操作の実行中にサーバーの進行状況を非同期的にポーリングし、UIを更新します。

追加のベルとホイッスル:-長時間実行されている操作をキャンセルするアクション-Webアプリケーションの外部でタスクを実行する(Azureには、Webアプリから非同期でタスクを実行することに関するいくつかの優れた機能があります)-進行状況を返すアクションを使用して、操作があるかどうかをクライアントに通知します完了またはキャンセルされました。

于 2011-02-18T19:18:50.883 に答える