Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[ASP.Net/C#] Variabele in view gebruiken

Pagina: 1
Acties:

  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:26
Ik ben bezig met een applicatie middels asp.net/C# (i.c.m. Web Client Software Factory).

Nu wil in de codebehind (aspx.cs file dus) een variable kunnen zetten die ik in de view gebruik. Hoe pas ik dit goed toe? Ik heb gegoogled, maar kan het niet vinden (dus ik zoek verkeerd of het bestaat niet).

Het doel is dat ik in de code iets als
ASP:
1
<asp:Label ID="lblTest" runat="server" Visible="<%# this.isEditable #%">

kan doen. Is dit mogelijk? Ik kan wel alle element los benaderen en de Visible waarde zetten, maar dat is wat meer werk (dan moet ik in alle repeaters op die pagina een ondatabound toepassen en dat is meer werk dan noodzakelijk denk ik)

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

De 'view' kan alle variabelen, properties en methodes benaderen welke zijn gemarkeerd met internal, public of protected (view inherits codebehind).

Je hoeft in principe daarvoor geen databinding op page niveau te gebruiken.

<% =this.isEditable %> is dan voldoende om de waarde van het attribute te zetten.

ASP:
1
<asp:Label ID="lblTest" runat="server" Visible='<% this.isEditable %'>

Voor webcontrols zul je enkele aanhalings tekens moeten gebruiken. Bij 'gewone' html kun je ook dubbele aanhalings tekens gebruiken. Een en ander heeft te maken wanneer de asp.net parser de waardes toekent.

If it isn't broken, fix it until it is..


  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:26
C#:
1
<%= this.isEditable %>


Zo werkte het, had al zoiets geprobeerd maar blijkbaar toch niet helemaal ok.

Bedankt!

Edit:

Het werkt toch op een hoop elementen niet goed...

ASP.NET:
1
 <asp:Panel ID="pnlFunctieToevoegen" runat="server" Visible='<%#this.isVisible %>'>


en toch laat hij het panel wel zien. De getter van de property wordt netjes aangroepen maar het lijkt toch geen effect te sorteren...

[ Voor 54% gewijzigd door 418O2 op 11-07-2008 12:46 ]


  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Je hebt nog (wel) steeds het binding (#) karakter in je statement staan. Je moet dan in page_load ook this.DataBind() aanroepen, anders werkt databinding niet goed. Maar een stuk eenvoudiger (en het kost je ook minder resources) is het '#' teken veranderen in een '=' teken.

Op view niveau staat de '=' gelijk aan een Response.Write aanroep. Voordat aspx gecompileerd wordt maakt asp.net er dan Visible="false" van.

Maar zoals aangegeven is databinding in dit geval op page niveau niet nodig. Overigens bepaal ik eigenlijk altijd in de code behind of een webcontrol wel of niet gerenderd moet worden.

Het is verstandig om code gebruik in de view zoveel mogelijk te beperken.

If it isn't broken, fix it until it is..


  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:26
Ik ben er inmiddels uit. Bedankt voor de hulp!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:02

TeeDee

CQB 241

En wat heb je nu (anders) gedaan of aangepast? Of heb je het advies van Niemand_Anders ter harte genomen?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:26
Ik heb het helemaal anders gedaan. Ik heb een var in de codebehind gezet die wordt gevuld door de presenter. Adhv die var zet in in de Page_load de betreffende elementen op de goede visibility. In de repeaters heb ik een onitemdatabound die adhv die var elementen verborgen maakt, of niet.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:02

TeeDee

CQB 241

We pakken even je TS erbij :P
(dan moet ik in alle repeaters op die pagina een ondatabound toepassen en dat is meer werk dan noodzakelijk denk ik)
Dus nu heb je het e.e.a. alsnog in de databound zitten?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:26
Ja aangezien het een geklooi van jewelste was om het anders te doen. Daarbij is het volgens mij ook een stuk beter omdat je ander logica in je template hebt staan.

ben (nog) geen goede .net programmeur (het losse van php zit er nog in), maar probeer het allemaal wel zo goed en netjes mogelijk te doen

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 23:02

TeeDee

CQB 241

Mag ik daar dan 1 kanttekening bij plaatsen?

Stop even met WCSF en ga aan de slag met een 'normaal' Webapplicatie project. WCSF is dusdanig uitgebreid (en voor veel zaken te omslachtig) om als start project te gebruiken.

Heart..pumps blood.Has nothing to do with emotion! Bored


  • 418O2
  • Registratie: November 2001
  • Laatst online: 19:26
Nou ik snap het meeste wel, dit was even een klein ding. we werken met 3 man op kantoor met WCSF en het verloopt tot nog toe allemaal wel goed, voor de meeste dingen kan ik wel hulp krijgen. We willen toch 1 framework gebruiken aangezien dat toch makkelijker is.

Verwijderd

Mocht iemand nog vragen hebben over WCSF, ik gebruik het al dik 1.5 jaar in serieuze web applicaties.

Dennis Doomen
Aviva Solutions
Pagina: 1