Regardez mon code que j'ai créé dans une vue partielle:
p> ici je construis une table simple qui montrant les détails du client. P> Comme vous pouvez le voir, Chaque rangée, j'essaie de créer un lien qui redirigera vers une autre action. P> Cette action nécessite la clientèle et certains paramètres supplémentaires. p> Les paramètres supplémentaires sont différents pour chaque page où cette vue partielle utilise.
Alors, j'ai décidé de rendre les méthodes d'action pour passer que les paramètres supplémentaires dans le ViewData comme par exemple RouteValueDictionary. P> , sur le point de vue que j'ai un problème, je dois passer customerId et que RouteValueDictionary ensemble dans Html.ActionLink méthode.
Qui me fait comprendre une manière de combiner tous ces paramètres en un objet (objet ou nouvelle instance routée) p> en raison de la manière dont le MVC ne le fait, je ne peux pas créer de créer une méthode La classe de codeBeHind (il n'y a pas de codeBiHind en MVC) qui rejoindra ces paramètres. P> Donc, j'ai utilisé le code intégré de manière laidée -
... Script runat = "serveur" ... p> p> de cette façon est très moche pour moi, parce que je déteste utiliser le code en ligne dans la partie de vue. P> Ma question est - y a-t-il un meilleur moyen de la manière dont je peux mélanger les paramètres passés de l'action (dans la vue, Tempdata, Templdata, autres ...) et le paramètre de la vue lors de la construction des liens d'action. p> Peut-être que je peux construire ce lien d'une autre manière? p> Merci! p> p > code> code> p>
3 Réponses :
Peut-être un moyen simple de faire cela serait de créer une extension d'Urlhelper qui fait quelque chose de similaire à la méthode de votre joinParameters. Quelque chose comme la méthode ci-dessous est un peu plus réutilisable:
<%=Html.ActionLink(
customerInfo.FullName
, ((string)ViewData["ActionNameForSelectedCustomer"])
, Url.AppendRouteValue((RouteValueDictionary) ViewData["AdditionalSelectionParameters"], "customerId", customerInfo.id)
, null)%>
Écrivez une méthode d'extension pour fusionner le dictionnaire source de la destination.
Url.Action(actionName, controllerName, srcRvd1.Merge(srcRvd2).Extend(srcRvd3));
Compte tenu des classes suivantes ... P> routévalueddictionardictionardictionnaire code> ensemble à l'aide de la méthode Union. Microsoft a un bon exemple de code de la méthode de l'Union ici Mais Microsoft n'est pas vraiment clair em> quand il s'agit d'utiliser des syndicats routices (d'où la raison de mon post).
StudentID: 1234
FirstName: Peter
LastNamse: Wilson
Email: peterwilson_69@example.com
DateOfBirth: 31/12/1969 12:00:00 AM
StreetLine1: Unit 99, Floor 10
StreetLine2: 99-199 Example Street
Suburb: Sydney
State: NSW
PostCode: 2001
Réponse exceptionnelle. +1. Bienvenue sur Sof et merci pour le poste.