良い一日、
進行中の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フォームコントロールに渡して処理したいと思います。