web-dev-qa-db-ja.com

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();
    }

私はこれを正しい方法で行っているかどうかはわかりませんが、助けていただければ幸いです、私はしばらくの間これで失速しました。ありがとう!

12
mrshickadance

クリックハンドラーが正常に呼び出された場合、これは機能するはずです。

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

編集:この特定のケースでは、アクションメソッドのパラメータがnullableの文字列である場合、NestId == null、ModelBinderが文句を言わないのであれば、例外はまったく発生しません。

26

私はこのようにしていた

内部view

<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" })))';

on javascriptファイル

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

このようにして、必要に応じてパラメータ値を渡すことができます。

@ Html.Rawを使用すると、urlはパラメータに対してamp;を取得しません

3
Sajjad Ali Khan

これはまた私が信じています:

$('#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
finstas