2016-09-26 7 views
0

私は自分のサイトにリンクを作成したいと思います。クリックすると、ダウンロードウィンドウ(単純なテキストファイル)が開きます。いくつかのチュートリアルでは、私はそれを行う方法を発見した、しかし、何らかの理由で、ActionLinkのが私のメソッドを呼び出すdoesntのようだし、ビューの代わりにMVC - コントローラメソッドの呼び出しの代わりにActionLinkが表示されます

マイActionLinkのを探します

@Html.ActionLink("here is the gpx log", "Download", "Treks") 

トレッキングコントローラでマイダウンロード方法

public FileResult Download() 
{ 
    byte[] fileBytes = System.IO.File.ReadAllBytes(@"~/Files/file.txt"); 
    string fileName = "file.txt"; //I will add parameters later, once the basics work 
    return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName); 
} 


[Route("treks/{trekname}")] //Route: /Users/12 
public ActionResult ShowTrek(string trekname) 
{ 
    return View(trekname); 
} 

そして、これは私がいつも

0123を取得し、エラーである(場合も混乱した場合には、ルーティング属性を使用しても、次のメソッドを追加しました)

ビュー「ダウンロード」またはそのマスターが見つからなかったか、または検索エンジンが検索された場所をサポートしていません。次の場所は、...検索した

〜/ビュー/トレッキング/ DownloadFiles.aspx blahblahbla:

が、私はまだ解決しないインチ近いこれに取り組んで一時間を過ごしたと。誰が私がどこでミスをしているか知っていますか?おかげでたくさんの

更新:これは

public static void RegisterRoutes(RouteCollection routes) 
     { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapMvcAttributeRoutes(); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

私RouteConfigファイルの内容です編集:[OK]を、私はそれをデバッグし。問題が属性ルーティングにあるようだ。何らかの理由で、コントローラはDownloadメソッドを無視し、ActionResult ShowTrekのために直接行きます...それを修正する方法はありますか?

+0

私は単純なMVCアプリケーションを作成し、あなたのような何かをして、うまく動作する(ダウンロードしてファイルに応答することができます)。ルーティング設定を確認してみてください。 – Brian

+0

こんにちは、私はルーティング設定からいくつかのものを削除して覚えていません、私はそこに私が属性ルーティングを有効にした変更のみ(私はコントローラの属性ルーティングを使用して、ダウンロードメソッドの後)。 RouteConfigファイルの内容を質問に追加しました。 – Jozef

+0

あなたの 'ShowTrek'メソッドは、' trekname'という名前のビュー(これは "Download"と仮定します)と同じ名前のビューを見つけようとするので、例外をスローします。あなたは 'return View((object)trekname);'を使うか、 'trekname'のプロパティを持つモデルを返すのが良いでしょう。 –

答えて

0

内のFileStreamオブジェクトを作成する必要がありFileStreamResultFileresultを交換してください。属性ルーティングに問題がありました。 PlsはコメントのStephen Mueckeのコメントを参照してください

0

はあなたにも解決方法あなたの

new FileStream(fileName, FileMode.Open) 

public FileStreamResult Download() 
{ 
// Your code 

} 
関連する問題