Cześć, to naprawdę dziwne !!W asp.Net, pisanie kodu w tagu kontrolnym generuje błąd kompilacji
Ale spójrz na poniższym kodzie asp:
<div runat="server" id="MainDiv">
<%foreach (string str in new string[]{"First#", "Second#"})
{ %>
<div id="<%=str.Replace("#","div") %>">
</div>
<%} %>
</div>
teraz jeśli umieścić ten kod wewnątrz dowolnej stronie internetowej (i nie martwić się o morał tego kodu, zrobiłem to, żeby pokazać pomysł) dostaniesz ten błąd:
Compiler error Message: CS1518: Oczekiwany klasa, delegat, enum, interfejs, lub struktura
oczywiście błąd nie ma nic wspólnego z prawdziwym problemem, szukałem kod wygenerowany przez asp.net i zorientowali się, co następuje:
private void @__RenderMainDiv(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer)
{
@__w.Write("\r\n ");
#line 20 "blabla\blabla\Default.aspx"
foreach (string str in new string[] { "First#", "Second#" })
{
#line default
#line hidden
@__w.Write("\r\n <div id=\"");
#line 22 "blabla\blabla\Default.aspx"
@__w.Write(str.Replace("#", "div"));
#line default
#line hidden
@__w.Write("\">\r\n ");
}
Jest to kod, który został wygenerowany ze strony asp i jest to metoda, która ma na celu uczynić nasz div (MainDiv), okazało się, że jest tam brakuje nawias „} "to zamyka metodę lub (dla pętli).
teraz problem składa się z trzech części:
1- najpierw powinieneś mieć kontrolę serwera (w naszej sytuacji jest MainDiv) i nie jestem pewien, czy jest to tylko znacznik div.
2- sterowania HTML wewnątrz serwera i kontroli kodu w środku za pomocą podwójnego znaku zapytania (na przykład <div id="<%=str
zamiast <div id='<%=str
3-Każdy klucz który ma przymocowane bloku np. Na {}, a {} stosując { .} ... itp
teraz usunięcie jakiejkolwiek części, rozwiąże problem !!!
jak to się dzieje ?? jakieś pomysły
BTW: proszę mi pomóc w podjęciu pytanie więcej oczywiste, ponieważ nie mogłem znaleźć najlepszych słów, aby opisać problem.
Wygląda na to, że moje pytanie nie jest jasne !! Moje pytanie brzmi: jakie kroki wykonuje asp.net w celu wygenerowania takiego błędnego kodu? jak to się dzieje! Nie chcę rozwiązania dla wyjątku, już rozwiązałem go za pomocą pojedynczego cudzysłowu.
Ok, wiem, jak rozwiązać problem, i już go rozwiązałem, ale jestem po prostu ciekawy, w jaki sposób ten błąd się wydarzył? –