2015-11-02 13 views
5

Sto cercando di inviare attraverso più parametri attraverso l'Url.Azione.@ Url.Azione aggiunta "amp;" tra i parametri che creano null nel controller?

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

Durante la fase di esecuzione che appare come segue:

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

enter image description here

Come potete vedere c'è un numero di telaio attraversato, ma è un nulla nel mio controller.

Ecco la mia modale.

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

se rimuovo l'amplificatore; funziona, ma l'URL.Action aggiunge l'amp ;.

+0

Questo codice dovrebbe funzionare correttamente. Sei sicuro di vedere uno strano comportamento con lo stesso identico codice? – Shyju

+0

@Shyju Non ha modificato nulla, copia l'area delle domande e la schermata per prova. – Pomster

+1

La risposta che Luaan ha dato dovrebbe funzionare per te. – Shyju

risposta

6

Url.Action non è il problema - è come lo si utilizza.

Si sta usando @ - questo è usato per inlining i risultati di un pezzo di codice lato server in una pagina (X) HTML. In una pagina (X) HTML, le entità devono essere correttamente codificate, trasformando il tuo & in un &amp;. Questo è il comportamento esatto corretto: è così che si suppone sia racchiuso tra testo o attributo, ad esempio (ecco perché lo si utilizza ad esempio <a href="@...">).

Tuttavia, si sta tentando di incorporare il valore non elaborato, piuttosto che il valore codificato, poiché non si sta tentando di emettere HTML, si sta emettendo testo non elaborato. Html.Raw fa proprio questo:

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

Bello, grazie – Mahmoud