C# .NET 4.0 Ottieni il valore di un ID di un elemento Web leggendo la pagina .aspx con FileStream o StreamReader
-
29-10-2019 - |
Domanda
Quindi, ecco il problema che sto scrivendo un programma che esaminerà la cartella sul LocalHost prima che sia reso. Voglio essere in grado di ottenere il valore dell'ID di un elemento Web e archiviarlo in un oggetto List.
Ad esempio ho una pagina:
<html>
<body>
<CustomControl:MyPhoneValidationControl ID="PhoneValidator" validationgroup="PageValidation" />
<CustomControl:MyEmailValidationControl ID="EmailValidator" validationgroup="PageValidation" />
</body>
</html>
Il programma andrà su C: WebFolder Page.aspx e quindi leggerà il file e troverà ogni Control personalizzato nella pagina e quindi prenderà il tipo di controllo (MyPhoneValidationControl o MyEmailValidationControl) e quindi assegnano il valore dell'ID (Phonevalidator, EmailValidator) come proprietà dell'oggetto di controllo.
Sto usando C#.NET 4.0. Ottenere l'ID dell'elemento è facile dopo che la pagina è stata resa ma non mostra che si tratta di un controllo personalizzato. Per vedere il controllo personalizzato devi guardare il file .aspx senza che sia reso da un server Web (IIS, ecc.)
Soluzione
Mi sono risolto questo riempiendo i dati della pagina in una stringa e poi usando
string page = new StreamReader(page).ReadToEnd();
List<string> control = new List(string)();
MatchCollection matchControl = Regex.Matches(text, "expression");
foreach (Match match in matchControl)
{
control.Add(match.Value)
}
Questo prende il controllo in un elenco e quindi posso analizzare l'elenco delle stringhe per ottenere il tipo e l'ID utilizzando Regex nelle proprietà dopo aver trasmesso l'intero elenco di controllo al costruttore di controlli.