2012-03-07 62 views
0

我是C#.net中的新手。我做客戶端發送一個CSV到我的控制器C#.Net從表單文章中讀取字符串輸入

我的控制器我無法讀取值。我的目標是最終創建一個csv文件,因此我避開了ajax文章。我在我的表單上執行操作,指向正確的Url並將輸入附加到表單中。

我有這樣的事情在我的客戶端

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"); 

} 

即時得到字符串數據爲空;

可以任何一個指出我做錯了什麼。在此先感謝

+0

好吧,數據的非無效性將完全取決於你在客戶端的某處有一個名爲「data」的表單元素。您提供的代碼中沒有任何內容表明您擁有這樣一種元素。 – 2012-03-07 22:27:48

回答

3

這種操作方法試試:

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

(另請注意,在你的代碼,你paramater data的名稱不匹配您的輸入控制uploadCsv的名稱)

+0

我在同一行上有一個快速問題,控制器代碼將會像從表單文章中讀取字符串那樣,表示字符串包含密碼。在此先感謝 – 2012-04-25 17:28:01

+0

如果是密碼,無關緊要,它仍然是服務器端的字符串。所以只需使用'... MyAction(字符串密碼){...}' – 2012-04-25 23:01:17

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

最可能的原因是你的數據不匹配您的ExportCSVFile處理器的參數的名稱標識。使用Fiddler檢查實際發佈到您網頁的內容。