2015-11-02 10 views
5

Ich versuche, durch die Url.Action mehrere Parameter zu senden.@ Url.Action Hinzufügen von "Amp;" zwischen Parametern, die Nullen im Controller erzeugen?

$('#dialog').dialog({ 
    autoOpen: false, 
    width: 850, 
    height: 420, 
    resizable: false, 
    title: 'Vehicle details', 
    modal: true, 
    open: function (event, ui) { 
    $(this).load("@Url.Action("LightStoneRequest", new { registrationNumber = Model.VehicleRegistration, vinNumber = Model.vVinNumber })"); 
    }, 
     buttons: { 
      "Close": function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 

Während der Laufzeit sieht es wie folgt aus:

$(this).load("/APQuotes/LightStoneRequest?registrationNumber=TE5TGP&vinNumber=VINTEST44889856"); 

enter image description here

Wie man dort sehen kann eine vin Zahl durch, aber es ist eine Null in meinem Controller übergeben ist.

Hier ist mein modal.

public partial class LightStoneRequest 
    { 
     public LightStoneRequest() 
     { 
      this.LightStoneDataFields = new HashSet<LightStoneDataField>(); 
     } 

     public int LightStoneRequestId { get; set; } 
     public string RegistrationNumber { get; set; } 
     public string VinNumber { get; set; } 

     public virtual ICollection<LightStoneDataField> LightStoneDataFields { get; set; } 
    } 

wenn ich den Amp entferne; Es funktioniert, aber die URL.Action fügt den Amp hinzu.

+0

Dieser Code sollte gut funktionieren. Sind Sie sicher, dass Sie ein seltsames Verhalten mit exakt demselben Code sehen? – Shyju

+0

@Shyju Habe nichts geändert, kopiere Vergangenheit in den Fragebereich und Screenshot für Beweis. – Pomster

+1

Die Antwort, die Luaan gab, sollte für dich arbeiten. – Shyju

Antwort

6

Url.Action ist nicht das Problem - es ist, wie Sie es verwenden.

Sie verwenden @ - dies wird verwendet, um die Ergebnisse eines Stücks serverseitigen Codes in einer (X) HTML-Seite einzubinden. In einer (X) HTML-Seite müssen die Entitäten korrekt codiert sein, indem Sie Ihre & in eine &amp; umwandeln. Dies ist das exakt richtige Verhalten - so soll es beispielsweise in Text oder einem Attribut eingezeichnet werden (weshalb Sie es beispielsweise in <a href="@..."> verwenden).

Sie versuchen jedoch, den Rohwert anstelle des codierten Werts zu verknüpfen - da Sie nicht HTML ausgeben möchten, geben Sie reinen Text aus. Html.Raw tut genau das:

@Html.Raw(Url.Action("Test", new { arg1 = "Hi!", arg2 = "there." })) 
+0

Schön, danke – Mahmoud