2010-10-11 22 views
0

J'essaie de générer un lien par nom de routage et par valeur de route. Je stocke les routes et les valeurs dans la base de données.Renvoie l'URL par nom de routage et par valeur de routage

Comment puis-je ajuster cette aide pour la faire fonctionner?

public static string GenerateLink(this HtmlHelper helper, string routeName, Dictionary<string, string> parameters) 
{ 
    // ?? 

    RouteValueDictionary rd = new RouteValueDictionary(); 

    foreach (var item in parameters) 
    { 
     rd.Add(item.Key, item.Value); 
    } 

    // string url = ?? 

    return url; 
} 

pour l'utiliser comme:

<%= Html.GenerateLink(Model.SomeLinkName, Model.RouteName, ..?) %> 

/M

Répondre

1

En fait, cette méthode existe déjà pour vous.

Html.RouteLink(string LinkText, string routeName, RoutevalueDictionary routeValues)

La seule chose que vous devez faire est de transformer votre IDictionary en RouteValueDictionary qui encore une fois est tout à fait simple que le constructeur d'une DRV peut prendre un IDictionary qui vous évite de faire la boucle foreach dans votre exemple.

Donc finalement tout ce que vous avez besoin est

Html.RouteLink(string LinkText, string routeName, new RoutevalueDictionary(parameters))

+0

Comment vais-je attribuer les valeurs si je les ai dans Model.Routeparameters (.ParameterKey et .ParameterValue)? –

+0

Si votre propriété Model.RouteParameters est déjà un RouteValueDictionary, vous pouvez simplement le passer à Html.RouteLink: Html.RouteLink ("link text", "routeName", Model.RouteParameters) –