webForumDet fria alternativet

Siter fast vid knepig if-sats

.NET

4 svar · 548 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Detta borde vara enkelt men jag misslyckas bara och måste därför tyvätt störa er igen.
Krav:
det måste finnas en rubrik,
man skall bara kunna skriva in på "DropDownList1.SelectedIndex == 0" om är Admin.
Jag försöker så här:

if (sRubrik.Length > 0)
            {
                bOk = true;
            }
            else
            {
                bOk = false;
                Label4.Text = "Du måste ha en rubrik!!!";
            }
            if (DropDownList1.SelectedIndex == 0)
            {
                if (Session["Roll"].ToString() == "Admin")
                {
                    bOk = true;
                }
                else
                {
                    bOk = false;
                    Label4.Text = "Du har inte behörighet att skriva i det forumet!!!";
                }
            }

Som det nu är, så blir det inget fel om det fattas en rubrik, men "Admin" fungerar. :q

Medlem sedan mars 2004485 inlägg
#2

Om den andra if satsen körs skriver du ju över bOk och Label4.Text så det som sats av den första skrivs över.

Är det det du menar är "fel"?

Medlem sedan aug. 20039 340 inlägg
#3

Du skriver över bOk i den andra if-satsen. Jag skulle i ditt fall gjort typ så här. (Med reservation för att typerna inte heter bool och String i .NET.)

bool bRubrikOk, bAdminOk;
String felMeddelande = "";

if (sRubrik.Length > 0)
            {
                bRubrikOk = true;
            }
            else
            {
                bRubrikOk = false;
                felMeddelande += "Du måste ha en rubrik!!! ";
            }
            if (DropDownList1.SelectedIndex == 0)
            {
                if (Session["Roll"].ToString() == "Admin")
                {
                    bAdminOk = true;
                }
                else
                {
                    bAdminOk = false;
                    felMeddelande += "Du har inte behörighet att skriva i det forumet!!!";
                }
            }

bOk = bRubrikOk && bAdminOk; /* && = logisk "och". Om både värdena är sanna blir resultatet sant. */
Label4.Text = felMeddelande;

Alternativ lösning: Räkna antalet fel.

int antalFel = 0;
String felMeddelande = "";

if (sRubrik.Length == 0)
            {
                antalFel++; /* ++ betyder "lägg till 1 till talet" */
                felMeddelande += "Du måste ha en rubrik!!! ";
            }
            if (DropDownList1.SelectedIndex == 0)
            {
                if (Session["Roll"].ToString() != "Admin")
                else
                {
                    antalFel++; /* ++ betyder "lägg till 1 till talet" */
                    felMeddelande += "Du har inte behörighet att skriva i det forumet!!!";
                }
            }

if (antalFel > 0){
    bOk = false;
}else{
    bOk = true;
}
Label4.Text = felMeddelande;
Medlem sedan mars 2004485 inlägg
#4

Om jag skulle ha kodat det där skulle jag satt bOk till true från början och sedan bara kolla om längden är 0 och sedan om index är 0 och man inte är admin sätta till false.

Jaja onödiga rader spelar kanske ingen roll så länge det funkar :P

Medlem sedan mars 20011 880 inlägg
#5

Jag hadde tydligen suttit för länge med det, jag såg ingen lösning. Nu blev det bra, tack för eran medverkan.

267 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)