Czy jest jakiś niezły sposób podziału FormCollection
na , który zawiera tylko te klucze, które zaczynają się od określonego ciągu?Krojenie kolekcji FormCollection za pomocą klawiszy rozpoczynających się od określonego ciągu znaków
(To pytanie jest w zasadzie taka sama jak this-> ale dla C#/FormCollection zamiast pytona Slicing a dictionary by keys that start with a certain string)
oto co wymyśliłem, aby obejść ten problem:
public ActionResult Save(FormCollection formCollection) {
var appSettings = new Dictionary<string, string>();
var appKeys = formCollection.AllKeys.Where(k => k.StartsWith("AppSettings."));
foreach (var key in appKeys)
{
appSettings[key] = formCollection[key];
}
...
Edycja: Problem z tym kodem polega na tym, że muszę to zrobić wiele razy dla różnych ciągów StartSweith, i dlatego będę musiał stworzyć metodę "narzędzia", aby to zrobić. Byłoby miło, gdyby mógł przeczytać w jednej linii jak:
formCollection.Where(k=>k.Key.StartsWith("AppSettings.");
tle (nie konieczne, aby rozwiązać problem): Kontekst jest asp.net mvc, i postaci z dynamicznym słownika pola. Jest to podobne do tego pytania - Return FormCollection items with Prefix - ale nie do końca takie samo.
I po przeczytaniu tej odpowiedzi How to build C# object from a FormCollection with complex keys - Zacząłem się zastanawiać, czy nie byłoby lepiej, nawet nie używając formularza post, ale wysyłając JSON zamiast tego.
Co jest nie tak z kodem, który masz? –
Pamiętaj, że zawsze powinieneś opisać * problem *. Tutaj brzmi tak, jakbyś mówił: "Robię coś, i tak to robię. Czy jest to dobry sposób na zrobienie tego?", Ale nie mówię nam, dlaczego twoje obecne rozwiązanie jest * nie miłe *. –
Dzięki, zredagowałem pytanie, aby powiedzieć, dlaczego nie jest ono miłe (z napisem "Edytuj", więc nie wygląda na to, że narzekasz na nic). – PandaWood