3

Web アプリケーション (モバイル テンプレート) に C# と ASP.NET MVC4 を使用しています。

これで、ビューに次のコードが表示されました。

     @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
     { 
     <label for="file">Upload:</label>
     <input type="file" name="file" id="file"/>
     <input type="submit" value="Upload" />
     }

そしてこれは私のコントローラーで:

    [HttpPost]
    public ActionResult Index(HttpPostedFileBase file)
    {
        string path = System.IO.Path.Combine(Server.MapPath("~/Content"), System.IO.Path.GetFileName(file.FileName));
        file.SaveAs(path);
        ViewBag.Message = "File uploaded successfully";
        return View();
    }

アプリケーションを実行してファイルをアップロードしようとすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。Visual Studio のメッセージ。しかし、以前に使用したように、上記のコードが ASP.NET MVC3 で正常に動作することはわかっています。

誰でもこれで私を助けることができますか?

4

2 に答える 2

3

この属性をフォームに追加します。data-ajax="false"

@using(Html.BeginForm("Index", "Home", FormMethod.Post,  new { enctype="multipart/form-data", data_ajax="false"})){
     <label for="file">Upload:</label>
     <input type="file" name="file" id="file"/>
     <input type="submit" value="Upload" />
}
于 2013-02-04T17:59:52.533 に答える
1

HttpPostedFileBase実際のところ、[HttpPost] アクションでパラメーターを受け取る必要がないため、を使用する必要はありません。フォームが設​​定されている限り、次のようにリクエストからファイルを取得できますenctype = "multipart/form-data"(すでに行っています):

var file = Request.Files[0];
于 2013-02-04T17:38:37.887 に答える