sguardo sul mio codice che ho creato in una vista parziale: Non c'è modo semplice come unire due valori RouteValueDictionary per passare parametri a Html.ActionLink
<% foreach (Customer customerInfo in Model.DataRows) {%>
<tr>
<td>
<%=Html.ActionLink(
customerInfo.FullName
, ((string)ViewData["ActionNameForSelectedCustomer"])
, JoinParameters(customerInfo.id, (RouteValueDictionary) ViewData["AdditionalSelectionParameters"])
, null)%>
</td>
<td>
<%=customerInfo.LegalGuardianName %>
</td>
<td>
<%=customerInfo.HomePhone %>
</td>
<td>
<%=customerInfo.CellPhone %>
</td>
</tr>
<%}%>
Qui sto costruendo semplice tabella che mostra i particolari del cliente.
Come si può vedere, in ogni riga, sto cercando di creare un collegamento che reindirizzerà a un'altra azione.
Questa azione richiede customerId e alcuni parametri aggiuntivi.
I parametri aggiuntivi sono diversi per ogni pagina in cui viene utilizzata questa vista parziale. Quindi, ho deciso di utilizzare i metodi Action per passare i parametri aggiuntivi nel ViewData come istanza RouteValueDictionary.
Ora, nella vista ho un problema, ho bisogno di passare customerId e che RouteValueDictionary insieme nel metodo Html.ActionLink. Questo mi consente di capire come combinare tutti i parametri in un oggetto (oggetto o nuova istanza RouteValueDictionary)
A causa del modo in cui il MVC lo fa, non posso creare creare un metodo nel codebehind class (non c'è codebihind in MVC) che entrerà a far parte di quei parametri.
Così, ho usato brutto modo - inserito il codice inline:
...script runat="server"...
private RouteValueDictionary JoinParameters(int customerId, RouteValueDictionary defaultValues)
{
RouteValueDictionary routeValueDictionary = new RouteValueDictionary(defaultValues);
routeValueDictionary.Add("customerId", customerId);
return routeValueDictionary;
}
...script...
In questo modo è molto brutto per me, perché io odio di utilizzare codice inline nella parte View.
La mia domanda è - c'è un modo migliore di come posso mescolare i parametri passati dall'azione (in ViewData, TempData, altro ...) e il parametro dalla vista quando si creano link di azione.
Potrebbe essere possibile creare questo collegamento in un altro modo?
Grazie!
risposta eccezionale. +1. Benvenuti in SOF e grazie per il post. – JoshYates1980