2015-04-13 15 views
5

Voglio passare più parametri da Url.Action, Ecco il codice in vistaCome passare più parametri a Url.Action()

window.location.href = "@Url.Action("ABC", "XYZ", new { @A= ViewBag.A , @B = ViewBag.B })"; 

E questo è il mio metodo nel controller XYZ

public ActionResult ABC(string A, string B) 
{ 
    // Some Code 
} 

Ricevo sempre i valori solo nel primo parametro e il 2 ° è sempre nullo. O se io ma prima il B. Il secondo è sempre nullo. VIEW è fondamentalmente sotto la funzione JavaScript. Ecco l'URL: http://localhost/CargoMainSite/XYZ/ABC?A=1&B=2 Si prega di notare che c'è del testo extra tra il Parametro 1 e il Parametro 2, cioè "amp;" se lo rimuovo esplicitamente. Funziona bene e ottiene valori corretti.

+0

Grazie @Lalit Kumar per la modifica. –

+2

Perché utilizzare post se si espongono entrambi i parametri in url? – gog

+0

Lascia fare. Cosa succede se non è POSTO? –

risposta

16

Motivo per cui Url.Action non funziona è che il & char in url è codificato, quindi è necessario utilizzare @ Html.Raw come di seguito

window.location.href = "@Html.Raw(@Url.Action("ABC", "XYZ", new { @A= ViewBag.A , @B = ViewBag.B }))"; 
+1

Grazie @Abbas galiyakot ha funzionato davvero perfettamente. Ma ho una domanda. Per favore fatemi sapere se ci saranno problemi con @ Html.Raw() come cross scripting? spamming ecc.? –

+0

Oltre a questo, accetto la tua risposta. –

+0

il rischio è in come viene utilizzato Se si visualizzano le informazioni immesse dall'utente, è preferibile utilizzare @ Html.Encode(). In altre parole, se si visualizzano dati di eneterd non utente si è sicuri di andare con @ Html.Raw() –