
A mellékelt példa megnyitása előtt szükséges egy CLClient nevű virtuális könyvtár létrehozása, mely a példa könyvtárában található CLClient mappára mutat. Ehhez futtassa le a mellékelt CreateVD.js parancsállományt.
A kontrol hasonló elven működik, mint a sorozat ezt megelőző számában megalkotott címke, csupán az a különbség, hogy a mellékelt és a kliens-alkalmazásban használt licence-állomány az ellenőrzendő szöveg mellett egy darabkorlátot is tartalmaz, melynek segítségével korlátozhatjuk a weblapon maximálisan elhelyezhető kontrolok darabszámát. A kontrolban ennek érdekében felhasználjuk a sorozat előző számában megalkotott SLicenseProvider és ServerLicense osztályokat, mert a használandó ExpireLicense és ExpireProvider osztályok ezekből származnak.
ExpireLicense osztály
Az ExpireLicense osztályban határozzuk meg, hogy hány darab kontrolról lehet szó. A konstruktorában beállítjuk a limit változó értékét.
private int limit;
private int count;
public ExpireLicense(Type type, string key, int uLimit) : base(type, key)
{
limit = uLimit;
}
Az IncCounter metódusban növeljük a count változó értékét.
public void IncCounter()
{
count++;
}
Az IsExpired property-ben lehet lekérdezni, hogy a count érték elérte-e a limit változó értékét. Amennyiben igen, akkor a kontrolok engedélye lejártnak tekinthető, a használó lap már nem tud betöltődni.
public bool IsExpired
{
get
{
return count > limit;
}
}
ExpireProvider osztály
Az ExpireProvider osztályban a ValidateLicense metódus lehet érdekes, hiszen itt történik meg a megadott szám ellenőrzése. Az ellenőrzéskor meghívjuk az IncCounter metódust, majd lekérdezzük az IsExpired property értékét.
ExpireLicense test = (ExpireLicense)license;
test.IncCounter();
if (test.IsExpired)
{
message = "A license (" + test.LicensedType.Name + ") lejárt!";
return false;
}
Amennyiben a property értéke igaz, akkor egy hibaüzenetet generálunk, és a metódus FALSE értékkel tér vissza.
A licence-állományban a szöveg és a darabkorlát száma egy „;” karakterrel van elválasztva, így az ellenőrző algoritmus el tudja választani a két elemet.
A kontrol kódjában az ExpireProvider osztályt kell megadni a LicenseProvider attribútumban.
[LicenseProvider(typeof(ExpireProvider))]
public class CLControl : Label
{
...
A hívó alkalmazásban ismételten nincs teendőnk. A helyes működést demonstrálandó, helyezzen el egynél több kontrolt a weblapon. A kérést a WebForm2.aspx lap szolgálja ki, ugyanis a darabkorlát 1.