私は実際にいくつかの便利な拡張メソッドを使用します。
public static RouteValueDictionary ToRouteValueDictionary(this NameValueCollection collection)
{
RouteValueDictionary dic = new RouteValueDictionary();
foreach (string key in collection.Keys)
dic.Add(key, collection[key]);
return dic;
}
public static RouteValueDictionary AddOrUpdate(this RouteValueDictionary dictionary, string key, object value)
{
dictionary[key] = value;
return dictionary;
}
public static RouteValueDictionary RemoveKeys(this RouteValueDictionary dictionary, params string[] keys)
{
foreach (string key in keys)
dictionary.Remove(key);
return dictionary;
}
は、これは私には、次のことを行うことができます
//Update the current routevalues and pass it as the values.
@Html.ActionLink("EN", ViewContext.RouteData.Values["action"], ViewContext.RouteData.Values.AddOrUpdate("lang", "en"))
//Grab the querystring, update a value, and set it as routevalues.
@Html.ActionLink("EN", ViewContext.RouteData.Values["action"], Request.QueryString.ToRouteValueDictionary.AddOrUpdate("lang", "en"))
ありがとうございました - 拡張子を持つ素敵なアイデアを。私はまだ拡張機能の概念に慣れていませんが、それは本当にそのような要求に対しては良いことです。 – sl3dg3
拡張メソッドは非常に強力で、MVCとLinqの動作の中核部分です。ここで私はjQueryのアイデアをコピーして、連鎖を可能にしました。 – Gidon