web-dev-qa-db-fra.com

MVC Redirect vers View from jQuery avec des paramètres

J'ai lu des articles sur ce sujet, mais je n'arrive pas à le faire fonctionner. Avec la redirection, je reçois une erreur «erreur de ressource introuvable». 

J'essaie de rediriger vers une page de détails. Il existe un élément dans l'élément que je stocke en tant que NestId et que je souhaite pouvoir éventuellement transmettre à la vue. Pour le moment, je veux juste rediriger vers la page de détails, il n'y a pas de modèle ou quoi que ce soit qui y est attaché. Je veux juste que le NestId le fasse là afin que je puisse l'utiliser pour faire plus d'appels AJAX avec. 

Voici mon jQuery: 

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

Voici la fonction sur le contrôleur:

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

Je ne sais pas si j'y vais de la bonne façon, mais toute aide serait la bienvenue, cela fait longtemps que je ne travaille pas. Merci!

10
mrshickadance

Si votre gestionnaire de clics est appelé avec succès, cela devrait fonctionner:

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

EDIT: Dans ce cas particulier, étant donné que le paramètre de méthode d'action est une chaîne qui est nullable , alors si NestId == null ne provoquera aucune exception, étant donné que ModelBinder ne s'en plaindra pas.

22
Daniel Conde Marin

je faisais comme ça

à l'intérieur vue

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

sur fichier javascript

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

de cette façon, je peux passer les valeurs de paramètre à la demande.

en utilisant @ Html.Raw, l’URL n’aura pas amp; pour les paramètres

3
Sajjad Ali Khan

Cela fonctionnerait aussi je crois:

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