In meiner Website mit Paging-und Suchoptionen muss ich den Benutzer umleiten und die Suchoptionen übergeben. Mit dieser Aktion möchte ich das Suchmodell nicht mit der URL übergeben (zB .).Pass Parameter mit Html.ActionLink basierend auf Wert
Meine Action jetzt wie folgt:
@Html.ActionLink(i.ToString(), "Index", new { idtrips = Model.idTrips, inituser = Model.initUser, date = Model.date.ToString("ddMMyyyy"), page = i})
Beim Anklicken führt dies zu einem folgenden Header: http://localhost:58763/?idtrips=0&inituser=0&date=05042016&page=5
Meine Frage ist: Kann man irgendwie, wenn Klauseln auf Html hinzufügen .ActionLink, um nur Werte anzugeben, wenn sie benötigt werden. Zum Beispiel habe ich nur ein Datum gesetzt, dann möchte ich die URL sein: http://localhost:58763/?date=05042016&page=5. Die anderen Werte haben einen Standardwert in meinem Controller, so dass diese URL funktioniert, aber ich kann sie nicht erzeugen.
Mein Controller:
public ActionResult Index(long idtrips = 0, long inituser = 0, string date = "", int page = 1)
{ ... }
Was ich suche ist so etwas wie dieses ,:
@Html.ActionLink(i.ToString(), "Index", new { if(Model.idTrips > 0) { idtrips = Model.idTrips,} page = i})
Aber das wird mir noch geben die URL "http: // localhost: 1234 /? Idtrips = 0 & page = 5" Und das möchte ich vermeiden. es sollte wie neu {page = 5} oder neu {Idtrips = 1, page = 5} und inline sein. nicht mit einer if- oder switch-Anweisung über den Html.ActionLink –
Sie sollten in Betracht ziehen, Ihren 'idtrips' -Parameter auf Null zu setzen (und auf Ihrem Modell NULL-Werte zuzulassen). Dies würde Ihnen den beabsichtigten Effekt geben, nach dem Sie suchen (d. H. Keine Anzeige Ihres 'idtrips' -Parameters, wenn Null, obwohl er standardmäßig auf 0 gesetzt würde und ansonsten den Parameter anzeigen würde). –
Ich änderte sie in nullbare Werte und es funktioniert wie ich will. Danke für deine schnelle Hilfe! –