2013-12-11 14 views
7

私はこれに関連するいくつかの記事を見てきましたが、それを動作させるようには見えません。リダイレクトで私は 'リソースが見つかりませんでしたエラー'を取得します。MVCからjQueryへのリダイレクトをパラメータ付きで

詳細ページにリダイレクトしようとしています。最終的にビューに渡すことができるNestIdとして格納する要素にIDがあります。今は、詳細ページにリダイレクトしたいだけです。モデルやそれに付随するものはありません。私はNestIdにそれを作って、それを使ってもっとAJAX呼び出しを行うことができるようにしたいだけです。ここで

は私のjQueryのです:ここでは

$('#results').on('click', '.item', function() { 
      var NestId = $(this).data('id'); 
      var url = '@Url.Action("Details, Artists")'; 
      window.location.href = url; 
     }) 

は、コントローラの機能である:私はこれについての正しい方法が、助けをつもりかはわからない

public ActionResult Details(string NestId) 
    { 
     ViewBag.NestId = NestId; 
     return View(); 
    } 

いただければ幸いです、私はしばらくこのことをやめました。ありがとう!

答えて

19

あなたのクリックハンドラが正常にこれは動作するはずその後、呼び出された場合:

$('#results').on('click', '.item', function() { 
      var NestId = $(this).data('id'); 
      var url = "/Artists/Details?NestId=" + NestId; 
      window.location.href = url; 
     }) 

EDIT:この特定のケースではアクションメソッドのパラメータはNULL可能ある文字列であることを考えると、その後NestId == nullであれば、」勝ちましたModelBinderがそれに不平を言うことがないなら、例外を全く引き起こさない。

$('#results').on('click', '.item', function() { 
      var NestId = $(this).data('id'); 
      var url = '@Html.Raw(Url.Action("Artists", new { NestId = @NestId }))'; 
      window.location.href = url; 
     }) 
+0

これは完了したようです。そのようなURLをハードコーディングする方法はありますか? – mrshickadance

+1

@ABLのように、@ Url.Action( "Details"、 "Artists"、new {NestId = '+ NestId +'}) 'で置き換えることができます。また、他人を助けるためにあなたを助けた答えを受け入れることを検討してください。 – Daniel

+0

さて、ハードコードしていないソリューションがあるかどうかを私は待っていました。あなたとABが言ったオプションを試してみると、私はエラーが出ます(私は彼のコメントを書きました)。 – mrshickadance

-1
javascriptのファイル私はオンデマンドでパラメータ値を渡すことができることができますこの方法で

var url = _addInvoiceUrl.replace('_transactionIds_', warehouseTransactionIds).replace('_payeeId_', payeeId); 
     window.location.href = url; 

<script type="text/javascript"> 

//will replace the '_transactionIds_' and '_payeeId_' 
var _addInvoiceUrl = '@(Html.Raw(Url.Action("PayableInvoiceMainEditor", "Payables", new { warehouseTransactionIds ="_transactionIds_",payeeId = "_payeeId_", payeeType="Vendor" })))'; 

..

@htmlを使用して、 .Raw、URLはです。 p;パラメータの

+0

NestIdの周りにURL上の文字リテラルに多すぎる文字があるというエラーが表示されます... – mrshickadance

+0

これを試してみてください。var url = '@ Url.Content( "〜/ Artists/Details?NestId =' + NestId + '")' –

0

クエリ文字列とリダイレクト

+0

@NestIdは機能しません。 –

2

私はビュー

0内のこの

のように行うために使用:

これは私は信じてもうまくいく

$('#results').on('click', '.item', function() { 
        var NestId = $(this).data('id'); 
        // var url = '@Url.Action("Details", "Artists",new { NestId = '+NestId+' })'; 
        var url = '@ Url.Content("~/Artists/Details?NestId =' + NestId + '")' 
        window.location.href = url; 
       }) 
+0

私はこのソリューションが好きで、とてもきれいです! :) – Schoof

関連する問題