2013-12-11 11 views
7

Ich habe einige Beiträge zu diesem Thema gesehen, aber es scheint nicht zu funktionieren. Mit der Umleitung bekomme ich eine 'Ressource kann nicht gefunden werden Fehler'.MVC Redirect zur Ansicht von jQuery mit Parametern

Ich versuche, auf eine Detailseite umzuleiten. Es gibt eine ID in Element, die ich als NestId speichere, die ich schließlich an die Ansicht übergeben kann. Im Moment möchte ich nur auf die Detailseite umleiten, da ist kein Modell oder irgendetwas damit verbunden. Ich möchte nur, dass NestId es dorthin bringt, damit ich damit mehr AJAX-Anrufe machen kann.

Hier ist meine jQuery:

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

Hier kann die Funktion auf dem Controller ist:

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

Ich bin nicht sicher, ob ich über das den richtigen Weg werde aber Hilfe würde geschätzt Ich bin für eine Weile davon abgewichen. Vielen Dank!

Antwort

19

Wenn Ihr Click-Handler erfolgreich dann aufgerufen wird, sollte diese Arbeit:

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

EDIT: In diesem speziellen Fall gegeben, dass die Aktionsmethode Parameter ist eine Zeichenfolge, die nullable ist, dann, wenn NestId == null gewann‘ Es gibt keine Ausnahme, da der ModelBinder sich nicht darüber beschweren wird.

+0

Dies scheint die Arbeit zu erledigen. Gibt es eine Möglichkeit, die URL so zu codieren? – mrshickadance

+1

Sie könnten es einfach ersetzen durch: @ Url.Action ("Details", "Künstler", neu {NestId = '+ NestId +'}) 'wie @ABs suggeriert. Denken Sie darüber nach, die Antwort zu akzeptieren, die Ihnen geholfen hat, anderen zu helfen. – Daniel

+0

Ja, ich habe gewartet, um zu sehen, ob es eine Lösung gab, die es nicht hart codierte. Als ich die Option ausprobierte, die Sie und ABs sagten, erhalte ich einen Fehler (ich habe ihn unten kommentiert). – mrshickadance

-1

mit Query-String umleiten

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

Ich erhalte einen Fehler in der NestId, der besagt, dass zu viele Zeichen im Zeichenliteral auf der URL vorhanden sind ... – mrshickadance

+0

Sie können dies versuchen, var url = '@ Url.Content ("~/Künstler/Details? NestId =' + NestId + '') ' –

0

Das würde ich auch arbeiten glauben:

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

@NestId funktioniert nicht. –

2

i verwendet wie diese

innen Ansicht zu tun

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

auf Javascript Datei

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

auf diese Weise kann ich in der Lage, die Parameterwerte auf Anfrage weitergeben ..

von @Html mit .Raw, URL wird nicht bekommen p; für Parameter

+0

Ich mag diese Lösung, sehr sauber! :) – Schoof