2

でファイルをアップロードしようとするとASP.Net MVC、次のエラーが表示されます。

ファイルエラー

タイプ 'System.NullReferenceException' の初回例外が administratorPortal.dll で発生しました

ファイルエラー

スレッド '' (0x21e4) はコード 0 (0x0) で終了しました。タイプ 'System.NullReferenceException' の初回例外が administratorPortal.dll で発生しました

私からしてみれば

<form action="../../Controllers/patientAppointmentController.cs" method=post>
<input id="model" type="file" name="fileUpload" data-val="true" data-val-required="File is required" />
<input class="btn btn-primary" type="submit" value="Import" />
</form>  

私のコントローラーで

public ActionResult CSVUpload(HttpPostedFileBase fileUpload)
    {
        try
        {
            Debug.Write(fileUpload.ContentLength);

            if (fileUpload.ContentLength < 0 || fileUpload == null)
            {
                Debug.Write("unable to detectFile");
            }
        }
        catch
        {
            Debug.Write("file error");
        }
        return View();
    }

いくつかの問題があります。コントローラーに渡されたファイルを取得することさえできません。インターネットで見つけたさまざまな方法を試しましたが、どれもうまくいきませんでした。

  • 私はCSVhelperをインストールしました
4

2 に答える 2

4

フォームが間違った場所を指しているようです

<form action="/patientAppointment/CSVUpload" method="post" enctype="multipart/form-data">
  <input id="model" type="file" name="fileUpload" data-val="true" data-val-required="File is required" />
  <input class="btn btn-primary" type="submit" value="Import" />
</form>  

@Fals が指摘したように、メソッドをHttpPost属性で装飾して、フォームを受け取ることを示す必要もあります。

[HttpPost]
public ActionResult CSVUpload(HttpPostedFileBase fileUpload)
{
    try
    {
        Debug.Write(fileUpload.ContentLength);

        if (fileUpload.ContentLength < 0 || fileUpload == null)
        {
            Debug.Write("unable to detectFile");
        }
    }
    catch
    {
        Debug.Write("file error");
    }
    return View();
}
于 2013-09-18T17:09:30.993 に答える
1

フォームのアクションは、.cs ファイルではなく、リソースのアドレスを指すべきではありませんか?

于 2013-09-18T17:06:49.350 に答える