---
title: "Enkel fråga om kontroller"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/139527-enkel-fråga-om-kontroller"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "trexter"
published: "2005-12-18T17:35:32.000Z"
updated: "2005-12-20T15:54:38.000Z"
replies: 6
views: 440
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/139527-enkel-fråga-om-kontroller"
---

# Enkel fråga om kontroller

## #1 — trexter, 2005-12-18T17:35Z

Jag har för mig att det ska finnas en serverkontroll som kan "kapsla" in andra kontroller. På så vis kan man t ex sätta visible = true för flera kontroller samtidigt. Vad heter den här kontrollen?

Permalänk: https://www.webforum.nu/p/139527

## #2 — mozilla, 2005-12-18T17:42Z

[Panel](http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolspanelclasstopic.asp) eller [PlaceHolder](http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsplaceholderclasstopic.asp)?

Permalänk: https://www.webforum.nu/p/1730188

## #3 — trexter, 2005-12-18T17:57Z

Det verkar fungera lite grand i alla fall, men när jag lägga in flera kontroller:

```
             <asp:Panel id="PanelLogIn" visible="true" runat="server">
		      <table>
			<tr>
			  <td>Email:</td>
			  <td><asp:TextBox id=UserName Width=200 Runat=server /></td>
			  <td><ASP:RequiredFieldValidator ControlToValidate="UserName" Display="Static" ErrorMessage="*" ID="RFVUser" runat=server /></td>
			</tr>
			<tr>
			  <td>Password:</td>
			  <td><asp:TextBox id=UserPass Width=200 Runat=server TextMode="Password" /></td>
			  <td><ASP:RequiredFieldValidator ControlToValidate="UserPass" Display="Static" ErrorMessage="*" ID="RFVUpass" runat=server /></td>
			</tr>
			<tr>
			  <td>Persistent Cookie:</td>
			  <td><ASP:CheckBox id=PersistCookie runat="server" /> </td>
			  <td></td>
			</tr>
		      </table>
       	     </asp:Panel>
```

får jag felet

```
Object reference not set to an instance of an object.
```

Jag antar (?) att detta beror på att code-behind-filen inte hittar kontrollerna, t ex: 

```
SqlCommand myCommand = new SqlCommand("select * from Anvandare where AnvNamn = '" + UserName.Text + "' AND AnvPass = '" + UserPass.Text +"'", myConnection);
```

Permalänk: https://www.webforum.nu/p/1730199

## #4 — emission, 2005-12-18T22:14Z

Du har nog glömt att deklarera kontrollerna i code-behind.

Dessutom. Använd alltid, alltid, alltid parametriserade frågor. Bättre prestanda och eliminering av sql-injection-risken blir resultatet.

I exemplet du gav skulle man t.ex enkelt kunna logga in genom att ange användarnamnet "' OR 1=1--", eller dylikt.

```
SqlCommand myCommand = new SqlCommand("select * from Anvandare where AnvNamn = @AnvNamn AND AnvPass = @AnvPass", myConnection);

myCommand.Parameters.Add("@AnvNamn",SqlDbType.VarChar,50).Value=UserName.Text;
myCommand.Parameters.Add("@AnvPass",SqlDbType.VarChar,50).Value=UserPass.Text;
```

Permalänk: https://www.webforum.nu/p/1730283

## #5 — trexter, 2005-12-19T18:58Z

Tack, bra tips. En sak jag stör mig på är att jag inte får rätt på detta. Vill lagra användarens ID-nummer i en session.

" Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present."

Verkar inte heller finnas någon vettig syntax för att nå det datan genom kolumnnamnet.

```
		SqlCommand myCommand = new SqlCommand("select * from Anvandare where AnvNamn = @AnvNamn AND AnvPass = @AnvPass", myConnection);
		myCommand.Parameters.Add("@AnvNamn",SqlDbType.VarChar,50).Value=UserName.Text;
		myCommand.Parameters.Add("@AnvPass",SqlDbType.VarChar,50).Value=UserPass.Text;
		
		SqlDataReader dr = myCommand.ExecuteReader();
		if (dr.HasRows) {
			Message.Text = "lyckades";
			[b]Session["UserID"] = dr.GetInt32(0);[/b]
			FormsAuthentication.RedirectFromLoginPage(UserName.Text, PersistCookie.Checked);
		} else {
			Message.Text = "lyckades inte";
			PanelLogIn.Visible = true;
		}
...
```

edit. Jag undrar även hur en rad som denna ska se ut om man ska ha en int som parameter.

```
myCommand.Parameters.Add(new SqlParameter("@FelAnvID", SqlDbType.NVarChar, 300));
```

Permalänk: https://www.webforum.nu/p/1730716

## #6 — emission, 2005-12-19T23:05Z

> **trexter skrev:**
>
> " Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present."

Då måste köra en Read() på Readern för att få ut data. Byt ut HasRows till Read()

> **trexter skrev:**
>
> Verkar inte heller finnas någon vettig syntax för att nå det datan genom kolumnnamnet.

```
Session["UserID"] = (int)dr["UserID"];
```

> **trexter skrev:**
>
> edit. Jag undrar även hur en rad som denna ska se ut om man ska ha en int som parameter.
> 
>
>
> ```
> myCommand.Parameters.Add(new SqlParameter("@FelAnvID", SqlDbType.NVarChar, 300));
> ```

Allt detta finns mycket väldokumenterat. Om du använder VS eller VWD så ger det sig själv, med hjälp av IntelliSense.

```
myCommand.Parameters.Add("@FelAnvID", SqlDbType.Int).Value=12345;
```

Permalänk: https://www.webforum.nu/p/1730806

## #7 — trexter, 2005-12-20T15:54Z

...

Permalänk: https://www.webforum.nu/p/1731063

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/139527-enkel-fråga-om-kontroller
