ファイルを取得するフォームがありますが、これはすべて機能します。フォーム ポスト コントローラーは、データベース内に既に同じ名前のファイルが存在するかどうかを調べるチェックを行い、存在する場合は、HttpPostFileBase オブジェクトをモデルとしてそのビューに渡します。
ビューは、ユーザーに上書きの確認を求めるモーダル ポップアップで構成されます。はいと答えると、ビューは実際にファイルをアップロードしてデータベースに情報を保存するために、新しいコントローラー アクションに投稿する必要があります。
@model System.Web.HttpPostedFileBase
....
'Yes': function (modal) {
//Post to UploadFile
$.ajax({
url: '@Url.Action("UploadFile", "Media", new { area = "Manage" })',
type: 'POST',
data: { id: @locationid, file: @Model }
});
modal.closeModal();
},
ページで生成されたソースを見ると、データは次のようになっています。
data: { id: 1, file: System.Web.HttpPostedFileWrapper }
UploadFile は私が渡したものを期待していますが、HttpPostedFileBase
private void UploadFile(int locationid, HttpPostedFileBase file)
ただし、そこに到達する前に、javascript がエラーをスローします。
Uncaught ReferenceError: System is not defined
だから私は追加しました
@using System.Web
おそらく System.Web.HttpPostedFileWrapper が何であるかを理解していなかっただけだと思います。これはまったく役に立ちませんでした。これにどのようにアプローチするのが良いかについて、誰か提案がありますか?