2013-01-06 33 views
5

मैं निम्नलिखित कोड के माध्यम से JSON ऑब्जेक्ट भेज रहा हूं .. सीएसवी प्रारूप में नियंत्रक लौटने वाले मानकों को CSV फ़ाइल के रूप में खोलने या सहेजने के लिए प्रोम प्रदान करना चाहिए। मैं समझने में असमर्थ है कि वास्तव में क्या कोड होना चाहिए सफलता में लिखने: निर्यात के लिए समारोह (परिणाम).jax पोस्ट में FileStream रिटर्न प्रकार को कैसे संभालें?

लिंक

Html.ActionLink("Export", "", "", null, new { @onclick = "return exportData();"}) 

function exportData() { 

var searchViewModel = getExLogSearchModelData(); 
var path = getAbsolutePath("ExclusionLog", "ExportData"); 
$.ajax({ 
    url: path, 
    cache: false, 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'html', 
    type: 'POST', 
    data: JSON.stringify(searchViewModel), 
    success: function (result) { 
    }, 
    error: function (error) { 
     $("#voidcontainer").html("Error"); 
    } 
}); 

}

नियंत्रक ActionResult

public ActionResult ExportData(ExclusionLogSearchViewModel postSearchViewModel) 
    { 
     try 
     { 
      IEnumerable<ExclusionLogViewModel> exclusionLogData = null; 
      exclusionLogcData = this._workerService.GetExclusionLogData(postSearchViewModel); 

      return CSVFile(exclusionLogMembershipSyncData.GetStream<ExclusionLogViewModel>(), "ExclusionLogTables.Csv"); 
     } 
     catch (Exception ex) 
     { 
       throw ex; 
     } 
     return null; 
    } 

कर सकते हैं आप कृपया सुझाव है कि यह कैसे करें?

उत्तर

3

मैं एक ही समस्या मारा है और मैं $.ajax का उपयोग कर फ़ाइल डाउनलोड करने के लिए एक तरह से नहीं मिला है, लेकिन मैं एक उत्कृष्ट JavaScript लाइब्रेरी कि समान व्यवहार प्रदान करता पाया:

https://github.com/johnculviner/jquery.fileDownload

तुम बस को लागू करने की जरूरत है इस तरह कुछ:

$.fileDownload(path, { 
    httpMethod: 'POST', 
    data: JSON.stringify(searchViewModel), 
    success: function (result) { 
    }, 
    error: function (error) { 
     $("#voidcontainer").html("Error"); 
    } 
}); 

और नियंत्रक में कुकी बनाने के लिए याद रखें। src/Common में उपयुक्त कार्रवाई फ़िल्टर है जो आपके लिए करता है।