2016-11-08 10 views
1

現在、私はC#とAsp.Net MVCを使用しているWebアプリケーションで作業しています。ページの1つに、ユーザーがファイルをダウンロードして関連するデータを入力してアップロードできる要件があります。古いマシンを使用しているユーザーのため、私は.xls.xlsxで作業しています。どのファイルをダウンロードできるかは、ユーザーが選択しなければならないドロップダウン値に基づいています。同じメソッドを使用して別のファイルをダウンロードする

.xlsxlsxの2つのボタンがあります。私の質問は、どのようにファイル間を交換するために同じバックエンドコードを使用することです。したがって、.xlsがクリックされた場合、ユーザは.xlsファイルを取得し、他方がクリックすると、.xlsxファイルを受信します。

これは、これまでの私のコードです:

public FileResult DownloadTemplates(string policyType) 
{ 
    string templateName = string.Empty; 
    string baseDirectory = "base path"; 
    string templateDirectory = "temnplate directory path"; 

    switch (policyType) 
    { 
     case "Administrative": 
      templateName = "Admin Xls File"; //How can I swap between the .xls and .xlsx file? 
      break; 
     case "Policy": 
      templateName = "Policy Xls File"; //How can I swap between the .xls and .xlsx file? 
      break; 
     case "Consignment": 
      templateName = "Consignment Xls File"; //How can I swap between the .xls and .xlsx file? 
      break; 
     case "Quality": 
      templateName = "Quality Xls file"; //How can I swap between the .xls and .xlsx file? 
      break; 
     default: 
      templateName = string.Empty; 
      break; 
    } 

    string filePath = Path.Combine(baseDirectory, templateDirectory, templateName); 
    byte[] fileData = System.IO.File.ReadAllBytes(filePath); 
    string contentType = MimeMapping.GetMimeMapping(filePath); 

    return File(fileData, contentType); 
} 
+1

このメソッドは、XLSまたはXLSXであるかどうかをどのように認識しますか?あなたはこれのためのパラメータを渡したようではなく、どのボタンがクリックされたかを見るための '送信者 'はありません。新しいバージョンのExcelがこのファイルを開くので、どちらの場合でもXLSを提供しないでください。なぜあなたは両方を必要としますか? – Equalsk

答えて

1

Path方法があります - Path.ChangeExtensionあなたのための拡張機能に変更されます:パスに拡張子がない、拡張子がnullでない場合

は、返されるパス文字列には、パスの最後に追加された拡張子が含まれます。

これもうまくいくあなたの場所(例えば、XLSX)にすでに拡張子のいずれかを使用してファイルの名前を格納した場合のようにあなたがする必要があると思い、すべては次のようになります。

明らか ​​

xlsSelectedを渡す(または決定する)必要があります。また

、あなたはちょうどあなたが行うことができます延長せずにテンプレート名を格納する場合:

if (xlsSelected) 
    templateName = templateName + ".xls"; 
else 
    templateName = templateName + ".xlsx"; 

再度変更する必要があります場合は、あなたが拡張文字列リソースおよび/または構成を行うことで、さらに行くことができます将来は。

+0

もう一度、条件付き演算子 '(?:)'を使用して提案したものと似ていましたが、switch文を 'templateName = fileSelected.Equals(" xls ")に変更しましたか? "AdminXls": "AdminXlsx"; " – Code

関連する問題