2012-03-07 24 views
0

私はC#.netの初心者です。私のコントローラにCSVを投稿するクライアント側のフォームポストを行っていますC#。フォームポストから文字列を読み込む。

私のコントローラでは値を読み取ることができません。私の目標は最終的にcsvファイルを作成することで、私はajax投稿を避けています。フォームに入力を追加して正しいURLとImに指示するアクションがあります。

私は、コントローラ側では、私のクライアント側

WatchList_Class.prototype.Downloads1 = function(csv) { 
var input = '<input type= "text" id="uploadCsv" name="uploadCsv" value=""' +  csv + ' />'; 
    $('form#uploadCSV').append(input); 
    $('form#uploadCSV').submit(); 
    }; 

にこのようなものを持っている私が持っている

public ActionResult ExportCSVFile(string data) //Im getting data as null 
{ 
    string toReturn = Server.UrlDecode(data); 
    return File(System.Text.Encoding.UTF8.GetBytes(toReturn), "text/csv", "exportedData.csv"); 

} 

イムヌルとして文字列データを取得します。

Can何が間違っているのかを指摘できます。事前に感謝

+0

まあ、 'data'の非ヌルネスは、クライアントのどこかに' data'という名前のフォーム要素があることを完全に前提としています。あなたが提供したコードの中には、あなたがそのような要素を持っていることを示すものは何もありません。 –

答えて

3

は、このアクションメソッドを試してみてください。

[HttpPost] 
public ActionResult ExportCSVFile(HttpPostedFileBase uploadCsv) 
{ 
    uploadCsv.SaveAs("exportedData.csv"); 
} 

(また、あなたのコードでは、あなたのparamater dataの名前はあなたの入力コントロールuploadCsvの名前と一致しなかったことに注意してください)

+0

私は同じ行に簡単な質問があります。コントローラーコードは、フォームの投稿から文字列を読み取るためのもので、パスワードには文字列が含まれていると言います。ありがとうございました –

+0

パスワードであれば問題はありませんが、それでもサーバー側の文字列です。だからちょうど '... MyAction(文字列パスワード){...}'を使う –

0

を持っていますアップロードフォームにエンコードタイプを設定していますか?

enctype="multipart/form-data" 
1

パラメータはPOST変数の名前と一致する必要があります。したがって、データの代わりにuploadCsv:

[HttpPost] 
public ActionResult ExportCSVFile(string uploadCsv) 
{ 
    string toReturn = Server.UrlDecode(data); 
    return File(System.Text.Encoding.UTF8.GetBytes(toReturn), "text/csv", "exportedData.csv"); 
} 
0

ほとんどの理由は、データのIDがExportCSVFileハンドラの引数の名前と一致しないためです。あなたのページに実際に投稿されているものを確認するには、Fiddlerを使用します。

関連する問題