2011-01-28 20 views
1

私はmvcとjQueryの新機能です。私は最近、私たちがやらなければならなかった開発者によって設計されたサイトのコントロールを引き継いだ。私がここに入らない理由で彼が使用していたツリービューコントロールを変更する必要があった。しかし、基本的には、ツリービュー内のノードのクリックイベントでリソースをダウンロードできるようにする必要があります。私はイベントを処理する方法を知っているが、私はjqueryを介して自分のMVCコントローラへの呼び出しを行う方法を見つけることができません。リソースをダウンロードするために呼び出す必要のあるコントローラー機能へのパスは/ Resources/DownloadResourceです。私は$.post("/Resources/DownloadResourceLink", { id: value });のようなものを試してみましたが、私はステップスルーするとき、すべてが正しい値を取得しているjQueryを使ってmvcコントローラを呼び出す

 public ActionResult DownloadResource(string id) 
     { 
      var resource = 
       _resourceService.GetResourceQuery(new Specification<Resource>(r => r.ResourceId == new Guid(id))).FirstOrDefault(); 

     return new BinaryResult 
     { 
      FileName = resource.FileName, 
      ContentType = string.Format("application/{0}", Path.GetExtension(resource.FileName)).Replace(".", ""), 
      IsAttachment = true, 
      Data = System.IO.File.ReadAllBytes(resource.FilePath) 
     }; 
    } 

、ないダウンロード:ここではそのためのコードです。どんな助けでも間違いなく感謝します!

答えて

0

見てくださいThis 基本的には、MVCアクションアドレスをajax関数のurlプロパティとして呼び出すだけです。

0

問題は、あなたがIDをどのように渡しているのかもしれません。私の経験では、私はそれが、私はコールが期待しているcontent typeがあることを確認したい動作しない場合は、URL (/アクション/コントローラ/ IDルート)

$.post("/Resources/DownloadResourceLink/" + value); 

にデータを追加する必要がダウンロードタイプを修正してください。

それでも解決しない場合は、問題が投稿である可能性があります。

$.ajax()をご覧ください。デフォルトはgetです。これはダウンロードに必要な場合があります。私はコンテンツタイプが何である必要があるのか​​分からない(あなたはアクションメソッドから推測できるはずです)が、あなたの呼び出しはこのようになります。

$.ajax({ 
    url: '/Resources/DownloadResourceLink', 
    params: { id } 
}); 
2
<script type="text/javascript"> 

    $(document).keypress(function (e) 
    { 
     if (e.which == 13) 
     { 
      location.href = '@Url.Action("ActionName", "Controllername")'; 
     } 
    }); 

</script> 
関連する問題