Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC Redirect to View from jQuery with parameters

I have seen some posts relating to this but can't seem to get it to work. With the redirect I get a 'resource cannot be found error'.

I am trying to redirect to a Details page. There is an ID in element which I store as NestId that I want to eventually be able to pass to the View. Right now I just want to redirect to the details page, there isn't a model or anything attached to it. I just want the NestId to make it there so that I can use it to make more AJAX calls with it.

Here is my jQuery:

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

Here is the function on the Controller:

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

I'm not sure if I am going about this the right way but help would be appreciated, I've stalled on this for a while. Thanks!

like image 220
mrshickadance Avatar asked Dec 11 '13 03:12

mrshickadance


2 Answers

If your click handler is successfully called then this should work:

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

EDIT: In this particular case given that the action method parameter is a string which is nullable, then if NestId == null, won't cause any exception at all, given that the ModelBinder won't complain about it.

like image 188
Daniel Conde Marin Avatar answered Oct 11 '22 02:10

Daniel Conde Marin


i used to do like this

inside 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 file

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

in this way i can able to pass the parameter values on demand..

by using @Html.Raw, url will not get amp; for parameters

like image 29
Sajjad Ali Khan Avatar answered Oct 11 '22 04:10

Sajjad Ali Khan