Hej! det skall funka samma som i ASP <%= strCabTypes[6].ToString() %> som exempel Det fungerar inte hur jag än gör!! Nu har jag nästan tagit bort all kod: Eftersom <% taggarna ligger inom "" så tolkas de som en del av strängen. Ja, jag har testat lite olika, men inte fått det att funka. Tex något sådant här: hej, Hej! C# variabel i html tag
Jag är nybörjare i asp.net, har använt ASP innan. Nu ska jag skriva ut en sträng array i en html tag. Men får inte det att fungera. Hur ska man skriva? Funkar det inte med <% %>? Se kod nedan i imageButton1.
Ska jag definiera om html-taggen istället?
Exempel på vad som ska hända:
Om jag klickar på en viss imagebutton ska 7 andra imagebutton visas i en tabell ovanför. Om jag väljer någon av dessa
ska den första imagebutton visa denna bilden jag klickade på, istället.
Jag har lagt filnamnet till dessa 7 imagebutton i en string array, men senare är det tänkt att dom ska hämtas från en databas.
Men jag ville testa med array först och jag får inte det att funka.
Hur är det tänkt med C#, man ska väl bara använda sig av detta, inte något annat script, eller hur?
Jag har en MasterPage, en content page (Default3.aspx) och en fil med code behind: Default3.aspx.cs
Lite kod:
Default.aspx:
En tabell med (förnuvarande) 7 imagebutton. (Ska senare kunna variera i antal.)
<asp:ImageButton ID="imageButton1" ImageUrl="~/images/cabTypes/<%=strImages[2]%>>" BorderWidth="1px" runat="server" AlternateText="ct14hi" OnCommand="imageButton1_Command"
CommandName="imgBCabType" CommandArgument="ct14hi.gif"/>
En tabell till med några imagebutton. Beroende på vilken man klickar på här, ska det visas olika bilder i tabell ovan och i varierande antal.
<asp:ImageButton ID="imgBCabType" ImageUrl="~/images/cabTypes/ct14hi.gif" BorderWidth="1px" runat="server" OnClick="imgBCabType_Click" />
Default3.aspx.cs:
public partial class Default3 : System.Web.UI.Page
{
string[] strImages;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void imgBCabType_Click(object sender, ImageClickEventArgs e)
{
string[] strCabTypes = new string[7];
strCabTypes[0] = "ct14hi.gif";
strCabTypes[1] = "cp19.gif";
strCabTypes[2] = "cr14hi.gif";
strCabTypes[3] = "cr19hi.gif";
strCabTypes[4] = "cr19thi.gif";
strCabTypes[5] = "ct14hi.gif";
strCabTypes[6] = "ct19hi.gif";
strImages = strCabTypes;
}
protected void imageButton1_Command(object sender, CommandEventArgs e)
{
strPic = e.CommandArgument.ToString();
imgBCabType.ImageUrl = "~/images/cabTypes/" + strPic;
}
}
Det är nog ett jättelätt problem, hoppas ni kan hjälpa mig och att ni förstår vad jag menar!
Sv: C# variabel i html tag
Sv: C# variabel i html tag
public partial class Default3 : System.Web.UI.Page
{
string[] strBild = new string[3];
protected void Page_Load(object sender, EventArgs e)
{
strBild[0] = "Hej";
strBild[1] = "svej";
strBild[2] = "ct14hi.gif";
this.DataBind();
}
}
i Default3.aspx:
<asp:ImageButton ID="imageButton1" ImageUrl="~/images/cabTypes/<%=strBild[2].ToString()%>"
BorderWidth="1px" runat="server" OnCommand="imageButton1_Command" >
Om jag skriver in filnamnet "ct14hi.gif", direkt i Default3.aspx, istället för "strBild[2].ToString()", så fungerar det och bilden visas. Vad är det för fel? Jag ska väl inte lägga allt i en form tagg eller i en div tagg, det spelar väl ingen roll? (Förresten så ligger ju detta i dessa taggar redan eftersom det är en contentpage...)
//Diana
Sv:C# variabel i html tag
kan inte syntexen men det kanske hjälper ändå
dvs det borde stå något som
<asp:ImageButton ID="imageButton1" ImageUrl="~/images/cabTypes/" + <%=strBild[2].ToString()%>
eller något liknandeSv: C# variabel i html tag
ImageUrl="~/images/cabTypes/" + '"<%=strBild[2].ToString()%>"'
Andra förslag?
Sv:C# variabel i html tag
Sätt imageUrl i code-behind, då fungerar det iallafall till 100%.
page_load(...) {
// arrayen
// ...
bild.ImageUrl = "~/images/cabTypes" + strBild[2].ToString();
}
Sv:C# variabel i html tag
För att komma åt variabler utifrån backpagen (code behind) måste variabelns åtkomstnivå definieras för det. Genom att sätta "protected" före "string[] strBild" definierar du så "strBild" kan kommas åt från var som helst inuti klassen "Default3" (och även ifrån klasser som ärver "Default3").
Utelämnar du detta, som du har gjort, blir åtkomstnivån "private" och åtkomsten begränsas endast till den typen du står i, i detta fall "partial class Default3". Alltså bara åtkomlig ifrån backpagen. Därför kommer du inte åt den ifrån din contentpage Default3.aspx
Detta hade alltså löst ditt problem:
public partial class Default3 : System.Web.UI.Page
{
protected string[] strBild = new string[3];
protected void Page_Load(object sender, EventArgs e)
{
strBild[0] = "Hej";
strBild[1] = "svej";
strBild[2] = "ct14hi.gif";
this.DataBind();
}
}
Hoppas att det inte blev för svårförståeligt... :)