|
分類:[ASP.NET (VB)]
つい先日asp.net mvcを触りだした超初心者です。
言語はVB.Netを使っています。
ブラウザにはファイル選択フォームと送信ダイアログだけがあり、送信ボタンを押した時
選択したファイルをサーバーにアップロードしたいのですが、その後画面の一部表示変更をしたいのでajaxで実現したいと思っています。
それでいろいろ調べたサイトを参考にプログラムを組んだのですが、ファイルデータをコントロールに持っていくことができません。
コントローラー側での受け取り方が悪いのか、Viewでの渡し方が悪いのかわからないのですが、どなたかわかる方いらっしゃったらご教授いただけないでしょうか。
以下、コードになります。
よろしくお願いいたします。
【View】
@ModelType WebApplication1.Models.DemoFileUpLoadModel
@Code
ViewData("Title") = "Index"
End Code
<script>
function OnFileUploadClick() {
var $form = $(this).closest('form');
var formData = new FormData($form.get(0));
formData.append( "file", $("input[name='CsvFile']").prop("files")[0] );
$.ajax({
type: 'POST',
url: '/FUpload/UploadFile',
data: { csvfile: formData },
dataType: "json",
contentType: false,
processData: false,
success: function (data) {
if (data.IsSuccess) {
alert('アップロード成功!');
} else {
alert('アップロード失敗!');
}
},
Error: function(data){
alert('システムエラー!');
}
});
}
</script>
<h2>Demo For Upload File</h2>
@Using (Html.BeginForm("UploadFile", "FUpload", FormMethod.Post, New With {.id = "form", .enctype = "multipart/form-data"}))
@Html.AntiForgeryToken()
@Html.TextBoxFor(Function(model) model.Remarks, 30, 5)
@<input id = "CsvFile" type="file" name="CsvFile" />
@<input id="btnUpload" type="button" onclick="OnFileUploadClick()" value="アップロード" />
End Using
【Controller】
Public Function UploadFile(ByVal csvfile As FormCollection) As ActionResult
Dim lstErr As List(Of String) = Nothing
'↓Request.Files.Countがいつも0。取得できない。
If Request.Files.Count = 0 Then
Return Json(lstErr)
End If
'↓Request.Files("CsvFile")もNothing
Dim file As HttpPostedFileBase = Request.Files("CsvFile")
' ここに処理を書く
Return Json(lstErr)
End Function
|