1

良い一日、

進行中のAmazonS3にファイルをアップロードする必要があるASP.netMVCアプリがあります。私はFlajaxianと呼ばれるきちんとしたコントロールを見つけました。問題は、アップロードを追跡するデータの行をDBに挿入したいということです。以下のコードを見ると、コントロールには、アップロードの完了後に発生するFileUploader1_ConfirmUploadイベントがあります。Url.Action( "Upload"、 "TracksController")は、私が望むことを実行しません。これは、TrackControllerコントローラーでアップロードアクションを実行します。MVCを使用するのはこれが初めてなので、簡単な解決策があることを期待しています。

私はもともと、このようなコードでアップロードを実行するための送信ボタンを持っていました<div class="submitBtnDiv"><input type="submit" value="Submit" class="submitBtn" id="trackAdd" /></div>。しかし、アップロードは非同期なので、同じポストバックを実行したい

これを読むのに時間を割いてくださった皆さん、そしてそれを解決しようとしている皆さんに感謝します。

 <div class="contentsAcc"><form id="form2" runat="server" style="width:400px">
                <script runat="server">
                    private void FileUploader1_FileNameDetermining(object sender, FileNameDeterminingEventArgs e)
                    {
                        e.FileName = SessionWrapper.PersonId.ToString() + "_" + e.FileName;
                    }
                </script>
                <script runat="server">
                    private void FileUploader1_ConfirmUpload(object sender, ConfirmUploadEventArgs e)
                    {
                        Url.Action("Upload", "TracksController");                            
                    }
                </script>
                    <fjx:FileUploader ID="FileUploader1" runat="server">
                        <Adapters>
                            <fjx:DirectAmazonUploader   OnFileNameDetermining="FileUploader1_FileNameDetermining" OnConfirmUpload="FileUploader1_ConfirmUpload"
                                AccessKey="WebConfig:AmazonAccessKey" 
                                SecretKey="WebConfig:AmazonSecretKey"
                                BucketName="tracksupload" />
                        </Adapters>
                    </fjx:FileUploader>

        </form></div>

さて、昨日は上記から少しアプローチを変えてみました。TracksControllerのアクションを実行しようとする代わりに、そのアクションコードをConfirm_Uploadイベントに移動したいと思います。しかし、今でもテキストボックスの値を取得する必要があります。MVCは状態を記憶していないため、困難であることが証明されています。これがtextBoxesです。上記のコードと同じページにあります。

 <label for="BandName">Artist</label> 
       <%=Html.TextBox("Artists") %><%:Html.ValidationMessage("Artist","*")%>
        <div class="clearfix">
        </div>
        <label for="SongName">Song Title
        </label>
          <%=Html.TextBox("SongName") %><%:Html.ValidationMessage("SongName","*")%>
        <div class="clearfix">
        </div>

テキストボックスの値を取得して、サーバー側で発生するConfirm_Uploadイベントに送信することはできますか?サーバーコードがない場合は、JavaScriptクライアント側でしょうか。

私が使用しているアップロードコントロールは、私が望んでいることを正確に実行する唯一のものですが、それはWebフォームであり、サイトはMVCです。だから私はMVCページにWebフォームコントロールを持っています。MVCテキストボックスの値を使用して、それをWebフォームコントロールに渡して処理したいと思います。

4

1 に答える 1

1

Url.Actionは単にURIを返します。リダイレクトしようとしていますか?

WebFormsイベントがMVCで機能することがあるので、リダイレクトする必要があるのと同じくらい単純かどうかを確認していました。


主な問題は、MVCページのように見えるWebFormsコードを使用しようとしていることです。これはほとんど互換性がないため、JavaScriptを自分で接続するか、ビューで直接JavaScriptファイルのアップロードコントロールを使用する必要があります。

私はS3のアップロードに慣れていないため、何もお勧めできません。たぶん、別のSOユーザーがよりよく答えることができます。

于 2011-04-13T14:34:03.613 に答える