Jump to content

Nespēju atrasts kļūdu ASP.NET kodā.


dobbleextra
 Share

Recommended Posts

Izmēģināju  uzkodēt ko ASP.net, kurā esmu pilnīgs iesācējs izmantojot c#(ar kuru gan arī vēl esmu iesācējs, bet esmu jau izveidojis vairākas daudz sarežģītākas programmas). Bet uzdūros uz problēmas tieši ar c#, kuru nespēju atrast jau sazin cik ilgi. Programma ir vienkārša forma, kur jāievada savi dati jāatbild uz jautājumiem, kuri tiek paņemti randomā no saraksta un tad rezultāts tiek ievietots līderbordā ar sql serveri(to daļu vēl neesmu izdarījis, bet tai nevajadzētu būt problēmai). Kautkur ir kļūda, bet nespēju atrast tāpēc ceru, ka kādam izdosies man palīdzēt(Tālāki skaidrojumi kodā komentos, lai vieglāk saprast).

 

Kods(Iespējams ne visskaistākais, bet esmu vēl iesācējs):

 public partial class WebForm1 : System.Web.UI.Page
    {        
        
        public struct question
        {
            public string q, a1, a2, a3, ans;
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            QList = new List<question>() { new question() {
 q = "Cik ir 1+1", a1 = "1", a2 = "2", a3 = "3", ans = "2" }, 
new question() { q = "Cik mēnešu ir gadā?", a1 = "12", a2 = "10", a3 = "5", ans = "12" } };
//Jautājumi tikai tādi pagidām testa pēc
            int pos1 = 100;
            int pos2 = 200;
            for (int i = 0; i < 1; i++,pos1+=300,pos2 +=300)

//Šeit tiek izveidots noteikts skaits jautājumu
            {
                Random rand = new Random();
                Label l = new Label();
                l.Style[HtmlTextWriterStyle.Position] = "Absolute";
                l.Style[HtmlTextWriterStyle.Top] = pos1.ToString() + "px";
                l.Style[HtmlTextWriterStyle.Left] = "347px";
                question q = QList.ElementAt(rand.Next(0, QList.Count));
                answers.Add(q.ans);
                l.Text = q.q;
                CheckBox cb1 = new CheckBox();
                cb1.Style[HtmlTextWriterStyle.Position] = "Absolute";
                cb1.Style[HtmlTextWriterStyle.Top] = pos2.ToString() + "px";
                cb1.Text = q.a1;
                cb1.Style[HtmlTextWriterStyle.Left] = "250px";
                CheckBox cb2 = new CheckBox();
                cb2.Style[HtmlTextWriterStyle.Position] = "Absolute";
                cb2.Style[HtmlTextWriterStyle.Top] = pos2.ToString() + "px";
                cb2.Text = q.a2;
                cb2.Style[HtmlTextWriterStyle.Left] = "450px";
                CheckBox cb3 = new CheckBox();
                cb3.Style[HtmlTextWriterStyle.Position] = "Absolute";
                cb3.Style[HtmlTextWriterStyle.Top] = pos2.ToString() + "px";
                cb3.Text = q.a3;
                cb3.Style[HtmlTextWriterStyle.Left] = "650px";
                l.Visible = true;
                cb1.Visible = true;
                cb2.Visible = true;
                cb3.Visible = true;
                Button1.Style[HtmlTextWriterStyle.Position] = "Absolute";
                Button1.Style[HtmlTextWriterStyle.Top] = "4px";
                Button1.Style[HtmlTextWriterStyle.Top] = 
(Convert.ToInt32(Button1.Style[HtmlTextWriterStyle.Top].Substring(0, Button1.Style[HtmlTextWriterStyle.Top].IndexOf('p'))) + 300).ToString() + "px"; 
                form1.Controls.Add(cb1);
                form1.Controls.Add(cb2);
                form1.Controls.Add(cb3);
                form1.Controls.Add(l);
                questions.Add(q);
            }
        }
        List<question> questions = new List<question>();
        List<question> QList;
        List<string> answers = new List<string>();
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (TextBox4.Text == "Vārds" || TextBox2.Text == "Uzvārds" ||
 TextBox3.Text == "Dzimšanas gads")
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Lūdzu aizpildiet visus laukumus')</SCRIPT>");
            }
            int gads;
            if(!int.TryParse(TextBox3.Text, out gads)) 
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Lūdzu ievadiet pareizu gadu')</SCRIPT>");     
            }
            else if (gads > 12 || gads < 5)
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('Lūdzu ievadiet pareizu gadu')</SCRIPT>");  
            }
            List<CheckBox> CheckBoxes = new List<CheckBox>();
            foreach(Control c in form1.Controls)
            {
                if (c is CheckBox) 
                {
                    CheckBoxes.Add(c as CheckBox);
                    System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('" + (c as CheckBox).Text +"')</SCRIPT>");
//Šeit uzliku pārbaudi, un vinš citreiz met atšķirīgu rezultātu kā parādā uz ekrāna  
                }
            }
            int score = 0;
            Button1.Attributes.Add("onclick", "return false;");
            for (int i = 0; i < CheckBoxes.Count/3; i++) 
            {
                System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>alert('" + CheckBoxes.ElementAt(0).Text + " " +
 CheckBoxes.ElementAt(1).Text + " " + CheckBoxes.ElementAt(2).Text + " " + answers.ElementAt(0)  + "')</SCRIPT>");  
//vēl viens tests tā pati problēma
                if(CheckBoxes.ElementAt(i).Checked && CheckBoxes.ElementAt(i).Text == answers.ElementAt(i)) 
                {
                    score++;
                }
                else if (CheckBoxes.ElementAt(i + 1).Checked && CheckBoxes.ElementAt(i+1).Text == answers.ElementAt(i)) 
                {
                    score++;
                }
                else if (CheckBoxes.ElementAt(i + 2).Checked && CheckBoxes.ElementAt(i+2).Text == answers.ElementAt(i)) 
                {
                    score++;
                }
            }
            System.Web.HttpContext.Current.Response.Write(
"<SCRIPT LANGUAGE='JavaScript'>alert('Jūsu rezultāts ir " + 
score.ToString() + "/" + (CheckBoxes.Count/3).ToString() + "')</SCRIPT>");  
            //Server.Transfer("WebForm2.aspx");
        }
    }
Labots - Mezavecis
Forumam nepatīk, ja iemet pārāk garas rindas
Link to comment
Share on other sites

Mezavecis

Es kaut kā tavā kodā un skaidrojumā nevaru atrast, kur un kāpēc tev rodas kļūda. Būtu vismaz kaut kādu mājienu iedevis, kur ir problēma.

Link to comment
Share on other sites

dobbleextra

Jā, atvainojos laikam neīpaši labi padkaidroju.

Doma ir tāda, ka no questions list programma izlozē vienu jautājumu un uztaisa visas kontroles priekš tā, tad atblides uz jautājumiem tiek ieliktas answers list(šajā gadījumā tikai vienu atbildi). Tad checkboxes list<Checkbox> saliek visus checkboxus un pārbauda, ja noteiktais checkbox, kura texts ir vienāds ar atbildi ir atķeksēts, tad pieskaita punktu, bet citreiz punktu nepieskaita vai pieskaita, ja ir atbildēts nepareizi. Izmantojot javascript alert atklāju, ka citreiz iegūto checkbox teksts ir savādāks kā lietotājam rakstīts pie checkbox. Tāpat arī answers<string> saraksts citriez rāda citu atbildi kā jautājumam uz ekrāna.

Link to comment
Share on other sites

Guest
Slēgta tēma, pievienot komentāru nav iespējams.
 Share

×
×
  • Izveidot jaunu...