webForumDet fria alternativet

Codebehind fångar inte upp värden

.NETur .NET

4 svar · 546 visningar · startad av JPS

Medlem sedan nov. 2001101 inlägg
Frågan#1

Sitter och labbar igen med codebehind men jag får inte det att funka som jag hade tänkt.

I webpartsettings.vb har jag ett antal olika värden som styr den grafiska layouten på en webbsida som t.ex.

WebPartSiteWidth = "700" 'Marginal för satsyta

sedan använder jag en codebehind som har koden

<html>
<head>
	<title><% = WebPartName %></title>
	<link rel="stylesheet" type="text/css" href="../mall.css">
	<script src="../JavaScript/JavaScript.js"></script>
</head>

<body class="<% = WebPartBodyClass %>">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
	<td colspan="2" style="height:10px">&nbsp;</td>
</tr>
<tr>
	<td width="<% = WebPartSiteMarginLeft %>">&nbsp;</td>
	<td width="<% = [B]WebPartSiteWidth[/B] %>">

som läses in i default.aspx men jag får felmeddelandet att WebPartSiteWidth
inte är deklarerat (ÄR deklarerat i webpartsettings.vb). Min förhoppning var att ascx filer skulle fungera som asp .inc där inc filen sattes ihop med resterande dokument. Vad kan man göra?
(Det hade varit smidigast om inställningarna kunde ligga i en fil så att man slapp att deklarera värden i codebehind filerna.)

Medlem sedan apr. 20012 266 inlägg
#2

Hur har du "kopplat" din klass till själva webbsidan? Ser ingen <%@ Page %>

Medlem sedan nov. 2001101 inlägg
#3

I .ascx filen har jag <%@ Control Language="VB" %> och i default.aspx

<%@ Page Inherits="webPartSettings" Src="webPartSettings.vb" Language="VB" %>
<%@ Register TagPrefix="HtmlStart" TagName="HtmlStartInc" Src="HtmlStart.ascx" %>
<%@ Register TagPrefix="HtmlSlut" TagName="HtmlSlutInc" Src="HtmlSlut.ascx" %>

<%@ Register TagPrefix="HtmlMeny" TagName="HtmlMenyInc" Src="HtmlMeny.ascx" %>
<%@ Register TagPrefix="HtmlButtons" TagName="HtmlButtonsInc" Src="HtmlButtons.ascx" %>

<script runat="server">

</script>

<HtmlStart:HtmlStartInc runat="server"/>

Medlem sedan sep. 20026 425 inlägg
#4

Man använder inte användarkontroller på det sättet.
Vill du ha in specifika värden i din källkod så skulle jag använda literals i stället.

<td width="<asp:literal id="WebPartSiteWidth" runat="server" />">

och så deklarerar du WebPartSiteWidth som en literal i codebehind:

dim WebPartSiteWidth as literal
WebPartSiteWidth.Text = "200"

Bara ett exempel och lite av en fullösning.

Medlem sedan nov. 2001101 inlägg
#5

Ok - jag testar! (Jäkla synd att det inte går som tidigare det sparar men massa tid
om man behöver ändra layouten. De 4:a inc-filerna räckte för hela siten, då dessa styrde all grundläggande layout och siduppbyggnad.)
En fråga till: skall men deklarera alla värden som Public (Public WebPartSiteWidth = "700") i webPartSettings.vb så att man slipper att deklarera allt igen per sida som skall använda vädena eller finns det något annat sätt?

Min tanke är att använda en webPartSettings.vb fil för alla sidor som innehållar alla värden som man behöver på sin sajt.

Kom och tänka på en sak till: hur gör man om man vill inkludera en meny som är dynamisk d.v.s. gamla <% If Request("Namn") = "nisse" Then%>Rockar <% = Request("Namn")%><% Else %>Ingen rockar<% End If %>

139 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)