2017-06-15 10 views
-1

データベースに挿入するデータを含むExcelファイルを送信しています。asp.net mvcで一度にファイルといくつかのデータを返す方法5

行ごとにデータを検証する必要があります。行に無効なデータがある場合は、無効な行のみを含むファイルを返す必要があります。

無効な値を含むファイルを返すと、ダウンロードしたファイルに無効なデータが含まれていることをユーザーに知らせるテキストを書き込むことでモーダルを更新する必要がありますユーザーは書き換えて返信することができます。このよう

public ActionResult LoadData(HttpPostedFileBase _file) 

と復路:

Response.Clear(); 
Response.Buffer = true; 
Response.Charset = ""; 
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
Response.AddHeader("content-disposition", "attachment;filename= Colabs.xlsx"); 

using (var stream = new MemoryStream()) 
{ 
    xlWorkbookFile.SaveAs(stream); 
    stream.WriteTo(Response.OutputStream); 
    Response.Flush(); 
    Response.End(); 
} 
+0

あなたの問題は...? –

+0

は、ファイルだけでなく、クライアント側で読み取ることができるデータも返します。 –

+0

本質的にそうすることはできません。それはHTTPの仕組みではありません。あなたは、応答リンゴで一杯を得る。これは、HTML文書**または**ファイルダウンロードのいずれかであり、どちらでもありません。ただし、ファイルをダウンロードするためのリンクを持つHTMLドキュメントを返すことができます。これは一般的な方法です。 –

答えて

0

私が設立ソリューションました:

  • する前に、コントローラに作成されますクッキーを検索する間隔を作成し、提出します。
  • 追加のデータをクッキーに保存し、JavaScriptで読み込みます。コントローラでクッキーの作成

:JSで

Response.AppendCookie(new HttpCookie("someDataCookieName", dataValue)); 

は、値をチェック:

function CheckForValues() { 
    intervalId = window.setInterval(function() { 
     var cookieValue = $.cookie('someDataCookieName'); 
     if (cookieValue == token) { 
      alert(cookieValue) 
     } else if (stopInterval) { 
      clearInterval(intervalId); 
      stopInterval = false; 
     } 
    }, 1000); 
} 

任意のエラーoccours場合は、停止のために独自の条件を作成することができます。

1

すると、あなたが値としてでコンテンツ-dispositionヘッダーを送信する私はsubmiting、フォーム、およびアクションでこの方法をreceavingしてファイルを送信しています

添付ファイルは、ブラウザがダウンロードしたファイルとしてそれを扱うことを意味します。 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

をあなたの問題を解決するには、あなたが(ファイルで応答していない)モデルを使用して、アクションの結果を返し、ビューに隠されたものを維持する必要があります:UIは、あなたが参照できる

その応答で更新されることはありませんダウンロード可能なファイル(またはファイルを送信する別のアクションのURL)を指すiframe。

関連する問題