ReadMe.md 38.7 KB

Vrh.Web.Common.Lib

Általános célú ASP.NET MVC fejlesztéssel kapcsolatos és fordításra kerülő összetevők gyűjteménye.

Fejlesztve és tesztelve 4.5 .NET framework alatt. Teljes funkcionalitás és hatékonyság kihasználásához szükséges legalacsonyabb framework verzió: 4.5

#TODO: Véglegesítendő a komponens dokumentációja!!!

Főbb összetevők

  • CookieWebClient: MVC-s WebClient osztály kiterjesztése, mely a Cookie-kat is kezeli.
  • WebCommon: Egy statikus osztály hasznos segédeszközökkel.
  • DataTables támogatás: DataTables-et támogató osztályok, eszközök.
  • Redis támogatás: Redis műveleteket támogató eszközök. Egyelőre csak a RedisConnection osztály.

BaseController osztály

MVC-s alkalmázokhoz használható kontroller alaposztály, hasznos és nélkülözhetetlen szolgáltatásokkal. Főbb szolgáltatások:

  • Dispose megvalósítása
  • DataTable-hez kapcsolódó hasznos szolgáltatások
  • ThrEx: Egy nyelvi fordítóval kiegészített ApplicationException-t dobó metódus.
  • Mlmgt: MultiLanguageManager.GetTranslation meghívása a ForcedLanguageCode nyelvi kóddal.

Használati minta:

public class XXXXController : BaseController

Ahol XXXX az általunk készítendő controller neve.

Állandók

Alábbi értékek eléréséhez egy minta az általunk készített kontrollerben: MODELSTATE vagy BaseController.MODELSTATE.

Állandó|Típus|Érték|Leírás :----|:----|:---- MODELSTATE|string|ModelState|A TempData szótár ModelState kulcsának megnevezése.

Tulajdonságok

Név|Hatáskör|Leírás :----|:---- BaseFolder|protected|Az alkalmazás alap mappája, ez alatt van az App_Data mappa. A HttpContext.Server.MapPath("~") hívás értéke. BaseDateFormat|public|A megjelenítéskor és szűréskor használatos dátum formátum. Alapértelmezett értéke: Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern ForcedLanguageCode|protected|A ThrEx és az Mlmgt protected metódusok ezzel az értékkel hívják a MultiLanguageManager.GetTranslation-t, azért hogy az ne kérdezze le állandóan a RelevantLanguageCode-t. A BaseController példányosítása során az alapértelmezett értéke: MultiLanguageManager.RelevantLanguageCode. Ha ettől eltérő nyelvet szeretnénk használni, akkor a példányosítás után át kell állítani. RequestedParameters|protected|Azoknak a paramétereknek a gyűjteménye, melyeket megjelöltünk a példányosításkor. Ha nem jelölünk meg ilyen paramétert vagy üres az átadott típus, akkor NULL marad. Értékét a ParameterSeparating metódus álltja be. OtherParameters|protected|Azoknak a paramétereknek a gyűjteménye, melyeket nem jelöltünk meg a példányosításkor. Ha nincs feldolgozandó gyűjtemény vagy üres, akkor NULL marad. Értékét a ParameterSeparating metódus álltja be.

ParameterSeparating metódus

Az MVC-s akciók Request.QueryString és Request.Form tulajdonségénak szétválasztása a kért (elvárt) és egyéb paraméterekre. A megadott tulajdonságokban szereplő paramétereket két részre osztja. Egy RequestedParameters és egy OtherParameters szótárra. Hogy mi kerüljön a RequestedParameters szótárba azt egy statikus osztályban kell beállítani, melynek segítségével aztán hivatkozhatunk a szótár elemeire. Az összes túlterhelés:

void ParameterSeparating(Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
void ParameterSeparating(SeparatingSource source, Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
void ParameterSeparating(NameValueCollection collection, Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
void ParameterSeparating(string[][] paramlist, Type requestedParametersType, bool isAddUserName = true, bool ignoreCase = true)
Paraméter Leírás
requestedParametersType Az elvárt paramétereket tartalmazó osztály.
isAddUserName Hozzáadja-e automatikusan az OtherParameters szótárhoz az aktuális felhasználó nevét (User.Identity.Name) a SystemVariableNames.UserName kulccsal. Alapértelmezett értéke: true.
ignoreCase Betű méret figyelmen kívül hagyása az összehasonlítás során. Alapértelmezett értéke: true.
source Egy SeparatingSource enum érték, mely a szeparáció forrását és sorrendjét határozza meg.
collection Egy NameValueCollection típus, amelynek az elemeit kell szétválogatni.
paramlist Egy string[][] típus, amelynek az elemeit kell szétválogatni.

A kért (elvárt) paramétereket tartalmazó osztály

Az alábbi minta a Vrh.Web.FileManager Index akciójának lehetséges paraméterei:

/// <summary>
/// Az akciók által átvehető url paraméterek nevei.
/// </summary>
public static class QParams
{
    /// <summary>
    /// XmlParser kapcsolati sztring (connection string).
    /// </summary>
    public const string Xml = "xml";

    /// <summary>
    /// A FileManager definíció azonosítója, amely alapján a keresés és megjelenítés megtörténik.
    /// </summary>
    public const string Id = "id";

    /// <summary>
    /// A hívó által kért nyelv kódja, ha üres, akkor a releváns nyelvi kód lesz.
    /// </summary>
    public const string LCID = "lcid";

    /// <summary>
    /// A definícióban megadott gyökér mappa alatti mappa útvonal.
    /// </summary>
    public const string Folder = "folder";

    /// <summary>
    /// A definícióban megadott gyökér mappa alatti mappa útvonal.
    /// </summary>
    public const string File = "filename";
}

Felhasználási minták

A base.ParameterSeparating metódus létrehozza és feltölti a base.RequestedParameters szótárat, melynek pont annyi eleme van, ahány mezője a QParams statikus osztálynak, és a szótárban a kulcsok megegyeznek az osztály tulajdonságainak értékével. A szótárban az értékek az ugyanolyan nevű URL paraméterekben érkezett értéket kapják.

public ActionResult Index()
{
    base.ParameterSeparating(typeof(QParams));

    if (String.IsNullOrWhiteSpace(base.RequestedParameters[QParams.LCID]))
    {   // A ForcedLanguageCode a BaseController konstruktorában megkapja a MultiLanguageManager.RelevantLanguageCode-ot
        base.RequestedParameters[QParams.LCID] = base.ForcedLanguageCode;
    }
    else
    {
        base.ForcedLanguageCode = base.RequestedParameters[QParams.LCID];
    }
    if (String.IsNullOrWhiteSpace(base.RequestedParameters[QParams.Folder]))
    {
        base.RequestedParameters[QParams.Folder] = WebCommon.SIGN_BACKSLASH;
    }
    return View(ACTION_INDEX, model);
}

Amennyiben nem az alapértelmezett Request.QueryString NameValueCollection-t kell feldolgozni, akkor létezik olyan túlterhelése a metódusnak, amelyben megadható a feldolgozandó NameValueCollection. Példaként egy POST metódust van itt, melyben a Request.Form kollekciót kell feldolgozni:

[HttpPost]
public ActionResult SetValami()
{
    base.ParameterSeparating(Request.Form,typeof(QParams));
}

Létezik egy olyan túlterhelés is, melyben mind a Request.QueryString és a Request.Form feldolgozása is megtörténik. Ebben az esetben az első paraméter az, amelyik meghatározza a szeparáció forrását és sorrendjét.

/// <summary>
/// ParameterSeparating metódus gyűjtemény nélküli túlterhelésében
/// a szeparáció forrását és sorrendjét határozza meg.
/// </summary>
protected enum SeparatingSource
{
    /// <summary>
    /// A szeparációban csak a Request.QueryString vesz részt. 
    /// Ez az alapértelmezés.
    /// </summary>
    OnlyQueryString,

    /// <summary>
    /// A szeparációban csak a Request.Form vesz részt. 
    /// </summary>
    OnlyForm,

    /// <summary>
    /// A szeparációban elsőként Request.QueryString, majd
    /// a Request.Form feldolgozása történik meg. 
    /// </summary>
    FirstQueryString,

    /// <summary>
    /// A szeparációban elsőként Request.Form, majd
    /// a Request.QueryString feldolgozása történik meg. 
    FirstForm,
}

A hívási minta:

[HttpPost]
public ActionResult SetValami()
{
    base.ParameterSeparating(SeparatingSource.FirstForm,typeof(QParams));
}

A fenti mintában elsőként a Request.Form szeparálása történik meg, majd a Request.QueryString feldolgozása. A későbben elvégzett szeparáció során a

már a szótárakban létező elemek felülíródhatnak, ha ugyanolyan nevű paramétert talál.


WebCommon osztály

Egy statikus osztály hasznos segédeszközökkel.

Állandók

Alábbi értékek eléréséhez egy minta: Vrh.Web.Common.Lib.WebCommon.HTML_NEWLINE.

Állandó Értéke Leírás
HTML_NEWLINE <br /> A html-ben használatos új sor karaktersorozat.
SIGN_RELATIVE ~ A relatív hivatkozás jele az útvonalakban.
SIGN_SLASH / A "/" jel állandója.
SIGN_BACKSLASH \ A "\" jel állandója.

EditModeLetters osztály alatti állandók

Szerkesztési mód betűjelek lehetséges értékei. Alábbi értékek eléréséhez egy minta: Vrh.Web.Common.Lib.WebCommon.EditModes.SELECT.

Állandó Értéke Leírás
SELECT s A csak lekédezést lehetővé tévő szerkesztési mód betű jele.
ADD a Létrehozás és módosítást engedő szerkesztési mód betű jele.
DELETE d A fentiek mellett a törlést is engedő szerkesztési mód betű jele.
MANAGE m Általános kezelést engedő szerkesztési mód betű jele.

És létezik egy metódus is, amely visszaadja az értékeket egy stringben vesszővel elválasztva. All() = "s,a,d,m"

Tulajdonságok

Név Leírás
Layout Az alkalmazás számára érvényes általános layout. Alapértelmezés: "~/Views/Shared/_Layout.cshtml"
DefaultViewMode ViewMode alapértelmezett értéke. Futás közen módosítható. Alapértelmezés: ViewModes.Desktop

Metódusok

Base10ToBase

Egy decimális számot átalakít a megadott számrendszer szerinti számra, amelyet string formában ad vissza. A számrendszer 2 és 36 között lehet, beleértve a határokat is. Visszatérő értéke a megadott számrendszerbeli szám egy stringben.

static string Base10ToBase(long decNumber, int radix = 36)
Paraméter Leírás
decNumber A konvertálandó decimális szám.
radix A számrendszer alapja. Alapértelmezés: 36.

ErrorListBuilder

Egy kivételből összeszedi a keletkezett InnerException-öket, és abból egy listát képez. A DbEntityValidationException-t, és a Data dictionary-t is kifejti.

static List<string> ErrorListBuilder(Exception ex, string innerExceptionLabel = null)
Paraméter Leírás
ex Exception, melyet ki kell fejteni.
innerExceptionLabel InnerException üzenet kiírásakor ezzel vezeti be az üzenetet. Alapértelmezés: "Inner exception: ".

RealPath

Ha a megadott fájl név relatív útvonal, akkor elé illeszti az első paraméterben megadott mappát, ami a relatív hivatkozás feloldása. Ha fájlnév relatív, akkor az összefűzött útvonal, ha nem relatív, akkor maga a fájl név a visszatérő érték. Csak útvonal sztring műveletek, nem ellenőriz létezést vagy érvényességet.

string RealPath(string appPath, string fileName)
Paraméter Leírás
appPath A relatív értéket feloldó fizikai mappa.
fileName A relatív (vagy teljes) fájlnév.

SqlLikeToRegex

SQL like mintát fordít át egy reguláris kifejezés mintájává.

string SqlLikeToRegex(string like)
Paraméter Leírás
like A relatív értéket feloldó fizikai mappa.

ViewModeParser

A ViewMode beállítása egy megadott string alapján.

static ViewModes ViewModeParser(string viewMode, bool isThrowException = false)
Paraméter Leírás
viewMode A view mode sztring értéke. Ha null vagy üres, akkor az ApplicationCookie.DefaultViewMode lesz beállítva.
isThrowException Ha igaz, akkor rossz érték esetén hibát dob, egyébként a DefaultViewMode-dal tér vissza.

DataTables támogatás

DataTables statikus osztály

Egyelőre egy statikus osztályt tartalmaz, ami konstansokat tartalmaz a DataTables rendezésének segítéséhez.

/// <summary>
/// A DataTables működését támogató statikus osztály,
/// mely hasznos tagokat és metódusokat tartalmaz a 
/// szerver oldali működés támogatására.
/// </summary>
public static class DataTables
{
    /// <summary>
    /// A DataTables támogatásában hasznos állandók gyűjtőhelye.
    /// </summary>
    public static class Constants
    {
        /// <summary>
        /// Növekvő rendezés jelzése a DataTables-ben.
        /// </summary>
        public const string ORDER_ASC = "asc";

        /// <summary>
        /// Csökkenő rendezés jelzése a DataTables-ben.
        /// </summary>
        public const string ORDER_DESC = "desc";
    }
}

DataTablesIn osztály

/// <summary>
/// Egy osztály, amely a dataTables plugin által küldött
/// paramétereket tartalmazza. (Json class sent from dataTables)
/// </summary>
public class DataTablesIn
{
    /// <summary>
    /// Rajz számláló. 
    /// Annak biztosítására, hogy az ajax aszinkronitása ellenére is
    /// a kirajzolás megfelelő sorrendben történjen.
    /// </summary>
    public int Draw { get; set; }

    /// <summary>
    /// A kirajzolt első rekord indexe.
    /// </summary>
    public int Start { get; set; }

    /// <summary>
    /// A rekordok száma, amit a tábla megjelenít.
    /// </summary>
    public int Length { get; set; }

    /// <summary>
    /// Az oszlopok listája.
    /// </summary>
    public List<DTColumn> Columns { get; set; }

    /// <summary>
    /// A teljes táblázatra érvényes kereső objektum.
    /// </summary>
    public DTSearch Search { get; set; }

    /// <summary>
    /// A rendezettség listája. (Több oszlopot is tartalmazhat a rendezés.)
    /// </summary>
    public List<DTOrder> Order { get; set; }

    #region DTColumn class
    /// <summary>
    /// Egy oszlopot leíró osztály.
    /// </summary>
    public class DTColumn
    {
        /// <summary>
        /// Az oszlop tartalma.
        /// </summary>
        public string Data { get; set; }

        /// <summary>
        /// Az oszlop neve (azonosítója).
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// Az oszlop kereshető-e.
        /// </summary>
        public bool Searchable { get; set; }

        /// <summary>
        /// Az oszlop rendezése engedélyezve van-e.
        /// </summary>
        public bool Orderable { get; set; }

        /// <summary>
        /// Az oszlopra vonatkozó kereső objektum.
        /// </summary>
        public DTSearch Search { get; set; }
    }
    #endregion DTColumn class

    #region DTSearch class
    /// <summary>
    /// Egy keresést leíró osztály.
    /// </summary>
    public class DTSearch
    {
        /// <summary>
        /// Egy string kereső érték.
        /// </summary>
        public string Value { get; set; }

        /// <summary>
        /// Igaz, ha a kereső érték egy reguláris kifejezés.
        /// </summary>
        public bool Regex { get; set; }
    }
    #endregion DTSearch class

    #region DTOrder class
    /// <summary>
    /// Egy rendezést leíró osztály.
    /// </summary>
    public class DTOrder
    {
        /// <summary>
        /// Melyik indexű oszlop tartozik a rendezésbe. 
        /// </summary>
        public int Column { get; set; }

        /// <summary>
        /// A rendezettség iránya. 
        /// </summary>
        public string Dir { get; set; }
    }
    #endregion DTOrder class
}

Redis támogatás

RedisConnection osztály

Ha egy Redis adatszolgáltatót kell elérni, akkor a kiszolgálót és a használni kívánt pool-t is meg kell adni. Ezt egy redis kapcsolati sztringben kell megadni. Az osztály egy példánya létrehozható úgy is, ha egy ilyen kapcsolati sztringet adunk meg a konstruktorban. A konstruktor elvégzi a kapcsolati sztring feldolgozását és ellenőrzését, majd az értékeket elhelyezi a megfelelő tulajdonságokba:

string connectionString = "server:192.168.77.50;pool=ALM;port=6739;";
RedisConnection redisConnection = new RedisConnection(connectionString);
Tulajdonság Típus Leírás
Server string Redis server neve vagy IP címe.
Pool string Redis instance neve.
Port int Redis portszáma. Alapértelmezés 0.

A konstruktor pontos definíciója:

/// <summary>
/// A megadott kapcsolati string feldolgozásával áll elő egy redis kapcsolati példány.
/// </summary>
/// <param name="redisConnectionString">A Redis kapcsolati sztringje.</param>
/// <param name="isRequired">
/// Ha igaz, és <paramref name="redisConnectionString"/> null vagy üres, 
/// akkor hibát dob. Egyébként a példány létrejön üres értékekkel.
/// </param>
/// <exception cref="ArgumentNullException">
/// Ha null vagy üres a <paramref name="redisConnectionString"/> és 
/// <paramref name="isRequired"/> igaz.
/// </exception>
/// <exception cref="ApplicationException">Ha a sztring egyéb ok miatt nem helyes.</exception> 
public RedisConnection(string redisConnectionString, bool isRequired = true)

Version History:

2.20.2 (2023.10.13) Patches:

  • DataTables.Filter metódus javítása. A nullozható dátumokra is jól működik, nme csak az oszlop szűrésnél, hanem a tábla szűrésnél is.

2.20.1 (2023.09.19) Patches:

  • WebCommon.ErrorListBuilder mostantól saját kódot használ, nem a VRH.Common.ErrorListBuilder-ét. A VRH.Common.EF.ErrorListBuilder kód tartalmát használja, ami meg valamiért nem elérhető.

2.20.0 (2023.09.07) Compatible changes:

  • DataTablesIn.DTColumn osztály kibővült egy OrderField nevű tulajdonsággal.
  • DataTables.Order metódus módosítása, hogy ha ki van töltve az OrderField, akkor a rendezés arra történik.

2.19.5 (2023.08.10) Patches:

  • DataTables.Filter metódus módosítása. Nullozható enumokra is helyesen működik.

2.19.4 (2023.07.18) Patches:

  • DataTables.Filter metódus módosítása. Most már Guid típusú mező szűrésekor is helyesen működik.

2.19.3 (2023.06.05) Patches:

  • DataTables.Filter metódus módosítása. Enum összehasonlításkor volt típus konfliktus.

2.19.2 (2023.03.17) Patches:

  • BaseController.ForcedLanguageCode mostantól csak a MultiLanguageManager.ActiveLanguageCodes lista egy elemét fogadja el beállításként, egyébként nem változik az értéke.

2.19.1 (2023.03.03) Patches:

  • DataTables.Filter metódus módosítása. Mostantól a nullozható értéktípusok esetében is működik a szűrés.

2.19.0 CompatibleChange (nuget)

  • Áttérés a VRH.Common 3.0 változatára

2.18.1-2 Patches:

  • Az új Mlmgt metódusok megszüntetése. "params object[]" paraméter esetén, nem jók ezek a túlterhelések. A korábbi működéssel nem volt kompatibilis. A BaseController.ForcedLanguageCode beállításával el lehet érni a kívánt fordítást.

2.18.1 Patches:

  • Az új Mlmgt metódusok megszüntetése. "params object[]" paraméter esetén, nem jók ezek a túlterhelések. A korábbi működéssel nem volt kompatibilis. A BaseController.ForcedLanguageCode beállításával el lehet érni a kívánt fordítást.

2.18.0 (2022.10.26) Compatible changes:

  • DataTables.FilterTable és DataTables.FilterColumn navigációs tulajdonságok esestében is elvégzik a keresést.
  • DataTablesIn.DTColumn osztály kibővült egy SearchField nevű tulajdonsággal.
  • DataTables.Constants osztályra való hivatkozás mostantól fordítási hibát fog eredményezni. Már legalább 2 éve "Obsolete".
  • Frissítés a VRH.Common 2.25.0 változatára.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.21.2 változatára.
  • Frissítés a Vrh.XmlProcessing 1.30.3 változatára.

2.17.0 Compatible change (2022.10.24 nuget):

  • BaseController-ből a nemrég betett Log4ProCheckUser metódusok és összes vonzatuk törlése (és áthelyezésük a WebTools modulba) #### 2.16.0 Compatible change (2022.10.21 nuget):
  • új AddModelError metódusok hozzáadása #### 2.15.0 Compatible change (2022.10.20 nuget):
  • új Mlmgt metódusok hozzáadásaModel #### 2.14.0 Compatible change (2022.10.20 nuget):
  • ModelErrorMessageListBuilder hozzáadása #### 2.13.1-2 Patches: #### 2.13.0 Compatible change (2022.10.20 nuget):
  • BaseController funkcionális bővítése Log4ProCheckUser metódussal, a RunningControllerName és RunningActionName mezőkkel

2.12.2 (2022.10.10) Patches:

  • PagedList nuget csomag eltávolítása a projektből.
  • VRH.Web.Providers csomag eltávolítása a projektből.
  • Microsoft.AspNet.Providers csomag eltávolítása a projektből.
  • Microsoft.AspNet.Providers.Core csomag eltávolítása a projektből.

2.12.1 (2022.10.07) Patches:

  • Vrh.Membership nuget csomag eltávolítása a projektből.
  • Target framework mostantól 4.5.1. !!Ha "Target framework" megváltozik, akkor azért azt legalább jelezni kéne a history-ban!!

2.12.0 Compatible change (2022.10.05 nuget):

  • 2.11.0 módosítások visszavonása; 2.11 nuget csomag törlésre került a nuget szerverről

2.11.0 Compatible change (2022.10.04 nuget):

  • BaseController/Log4ProCheckUser metódusok beillesztése

2.10.2 (2022.09.14) Patches:

  • DataTables.FilterColumn() metódus mostantól nem dob hibát, ha Boolean mezők szűrését kell elvégeznie. Nem volt megvalósítva.
  • Frissítés a Microsoft.AspNet.Mvc 5.2.9 változatára.
  • Frissítés a Microsoft.Web.Infrastructure 2.0.0 változatára.
  • Frissítés a VRH.Common 2.23.1 változatára.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.20.2 változatára.
  • Frissítés a Vrh.XmlProcessing 1.30.2 változatára.

2.10.1 (2022.08.19) Patches:

  • DataTables.Filter() és DataTables.FilterTable() metódus NULL érték lekezelése.
  • DataTables.Response() nem jól adta vissza a recordsTotal értéket.

2.10.0 (2021.09.12) Compatible change:

  • HtmlHelper megoldások átkerültek a VRH.Log4Pro.WebTools projektbe.

2.9.0 (2021.08.29) Compatible change:

  • Frissítés a Vrh.XmlProcessing 1.29.0 változatára, a ResponseTargets enum áthelyezése miatt.
  • Frissítés a Newtonsoft.Json 13.0.1 változatára.

2.8.0 (2021.07.22) Compatible change:

  • WebCommon.LayoutNoMenu konstans bevezetése, amely egy minimalizált, praktikusan egy menü nélküli layout elérési útját tartalmazza

2.7.1 (2021.03.11) Patch Extension:

  • VrhHtmlHelper-ben a common actions kezelő egység a html.action link-et nem jól állította össze

2.7.0 (2021.02.17) Compatible Extension:

  • RefreshButtons osztály hozzáadása a VrhHtmlHelper eszközök közé

2.6.3 (2021.02.15) Patches:

  • A BaseController.ParameterSeparating javítása, hogy a paraméter osztály mezőit akkor is megtalálja, ha azok származtatott osztályokon keresztül épülnek fel.

2.6.2 (2021.02.10) Compatible changes:

  • VrhHtmlHelper.ActionPanel és VrhHtmlHelper.HelpPanel osztályok és egyéb kiegészítő helperek hozzáadása

2.6.1 (2021.01.26) Patches:

  • Verzió beállítása merge után.

2.6.0 (2021.01.24) Compatible changes:

  • Belekerült a BaseController-be a SetMLMCookie metódus, mely beállítja a controller session-re érvényes nyelvi cookie-t.
  • ActionButtonPanel osztály és HtmlHelper hozzáadása

2.5.8 (2021.01.20) Patches:

  • Frissítés a VRH.Common 2.20.1 változatára.
  • Frissítés a Vrh.XmlProcessing 1.24.0 változatára.

2.5.7 (2020.11.24) Patches:

  • Frissítés a Vrh.XmlProcessing 1.19.1 változatára.

2.5.7 (2020.11.12) Patches:

  • Frissítés a VRH.Common 2.19.0 változatára.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.17.6 változatára.
  • Frissítés a Vrh.XmlProcessing 1.18.5 változatára.

2.5.6 (2020.03.28) Patches:

  • NuGet csomag módosítása úgy, hogy a modul ReadMe.md "Build Action" tulajdonsága "None" legyen a telepítés után. Install.ps1 hozzáadása.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.10.1 változatára.

2.5.5 (2020.03.26) Patches:

  • Frissítés a VRH.Common 2.13.1 változatára.
  • XML dokumentáció pontosítása.
  • Frissítés az MSTest.TestAdapter 2.1.0 változatára. (Ez csak a Test projektet érinti!)
  • Frissítés az MSTest.TestFramework 2.1.0 változatára. (Ez csak a Test projektet érinti!)

2.5.3-4 (2020.03.19) Patches:

  • WebCommon néhány metódusa és állandója átkerült a VRH.Common-ba. WebCommon osztály hívásai nem változtak, a VRH.Common-ba hívnak bele.
  • CookieWebClient osztály is átkerült a VRH.Common-ba.

2.5.2 (2020.03.06) Patches:

  • A DataTables.Response metódus 1. túlterhelése: Ha IQueryable az átadott lekérdezés, akkor elvégzi előbb rajta a szűrést és rendezést, és utána adja vissza a választ.
  • A DataTables.Response metódus 2. túlterhelése: Ha IOrderedQueryable az átadott lekérdezés, akkor csak a választ adja vissza.
  • A DataTables.Order metódusban az összefűzött (több oszlopra vonatkozó) rendezésben lévő hiba javítása.

2.5.1 (2020.03.03) Patches:

  • A DataTables.FilterTable metódus második paramétere DataTablesIn típusra változott. Csak a táblázatban kereshetőnek jelölt oszlopokot veszi figyelembe a tábla szintű szűrésnél.

2.5.0 (2020.02.22) Compatible changes:

  • Új DataTables.FilterTable metódus, mely megvalósít egy tábla szintű szűrést (a teljes oszlopkészleten tartalmazás vizsgálattal).
  • Új DataTables.FilterColumn metódus, mely megvalósít egy oszlop szintű szűrést.
  • Új DatTables.Filter metódus, mely végrehajtja a FilterTable metódust, és az összes oszlopra a FilterColumn metódust.
  • Dátum szűréskor, ha használjuk a vezérlő karaktereket, és mögöttük érvényes integer szám van, azt évszámnak (ÉÉÉÉ) tekinti e verziótól. "Before" esetén ÉÉÉÉ.01.01 00:00:00, "After" esetén ÉÉÉÉ.12.31 23:59:59 értéket képez az összehasonlításhoz. A "Between"-ben értelemszerűen a bal oldalon az előbbi, a jobb oldalon az utóbbi érték képződik.
  • A korábbi szűrésre vonatkozó megoldások megmaradtak a BaseController-ben, de hamarosan Obsolete jelölést kapnak.
  • Új DataTables.Order metódus, mely végrehajtja az igényelt rendezéseket.
  • Új DataTables.Response metódus, mely végrehajtja a szűrést, a rendezést, és előállítja a jquery.datatables számára szükséges választ.
  • WebCommon kibővült egy bool IsNumericType(Type) metódussal. Igazzal tér vissza, ha a típus numerikus.
  • Az objektum osztálynak is lett egy új bővítése. Pl. int a= 1; a.IsNumericType() igazzal jelzi, ha numerikus.
  • Frissítés a VRH.Common 2.12.1 változatára.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.10.0 változatára.
  • Frissítés a Vrh.XmlProcessing 1.17.0 változatára.

2.4.1 (2020.01.27) Patches - release:

  • A HtmlHelperExtensions osztály névtere helytelen volt, javítás után a névtér helyesen: "Vrh.Web.Common.Lib".
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.9.2 változatára.
  • Frissítés a Vrh.XmlProcessing 1.15.2 változatára.

2.4.0 (2019.09.28) Compatible changes - release:

  • A BaseController automatikusan előállít egy ViewBag.ValidationSummaryMessage tulajdonságot üres sztring értékkel. A BaseController az OnActionExecuted eseményben a ModelState objektumból feltölti ebbe a változóba az üres sztring ("") kulcsú üzeneteket. A cshtml-ben egy egyszerű "vrhct.bootbox.alert('@ViewBag.ValidationSummaryMessage');" javascript sorral megoldhatjuk az üzenet kiírását. A "ValidationExtension" osztály megmaradt, továbbra is használható, de ez az új megoldás sokkal kisebb erőforrással elvégzi ugyanazt, mint az egész "ValidationExtension" osztály és a "ValidationSummary.cshtml" partial együttvéve.
  • A BaseController "DataTableSelector" tulajdonsága "Obsolete" jelölést kapott, meg fog szűnni a jövőben.
  • HtmlHelper kiterjesztésre került a VrhTextBox és VrhTextBoxFor metódusokkal, melyek ugyanazt tudják, mint a TextBox és TextBoxFor csak kapnak automatikusan egy "form-control" osztály jelölést.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.8.3 változatára.
  • Frissítés a Vrh.XmlProcessing 1.5.6 változatára.

2.3.1 (2019.09.12) Patches - release:

  • A BaseController-ben lett egy protected állandó MODELSTATE néven és "ModelState" értékkel a TempData szótár használatához.
  • A BaseController-nek lett egy csak olvasható protected tulajdonsága a BaseFolder, mely a HttpContext.Server.MapPath("~") hívás értékét tartalmazza. XmlParser-hez mindig kell, és így könnyebben elérhető.
  • Dokumentáció bővítése.
  • Frissítés a Vrh.XmlProcessing 1.5.2 változatára.

2.3.0 (2019.08.26) Compatible changes - debug:

  • BaseController.ParameterSeparating(string[][], type, bool, bool) metódus hozzzáadása.
  • BaseController.ParameterSeparating(SeparatingSource, type, bool, bool) metódus hozzáadása.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.8.1 változatára.
  • Frissítés a Vrh.XmlProcessing 1.5.0 változatára.

2.1.1 (2019.06.19) Patches - debug:

  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.5.2 változatára.
  • Frissítés a Vrh.XmlProcessing 1.3.0 változatára.

2.1.0 (2019.06.14) Compatible changes - debug:

  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.5.0 változatára.
  • VRH.ConnectionStringStore függőség megszűnt.

2.0.0 (2019.05.14) Incompatible changes - debug:

  • E verziótól az XmlParser, és minden XML feldolgozással kapcsolatos dolog már nem elérhető. Új hely: Vrh.XmlProcessing.
  • A standard JSON struktúrák és az IManage interfész át lett helyezve a Vrh.Common-ba.
  • Az ITransalation interfész és a TranslationBase osztály át lett helyezve a VRH.Log4Pro.MultiLanguageManager-be.
  • Minden "depricated" és "obsolete" jelölésű eszköz véglegesen megszűnt.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.4.0 változatára.
  • Vrh.XmlProcessing 1.0.0 hozzáadása.
  • Dokumentáció a változásoknak megfelelően frissítve.
  • ReadMe.md-ből a "csharp" jelölések cseréje "javascript"-re.

1.18.1 (2019.04.04) Patches - debug:

  • Frissítés a Microsoft.AspNet.Mvc 5.2.7 változatára.

1.18.0 (2019.03.01) Compatible changes - debug:

  • A CommonModel osztályba bekerült egy GetBoolList nevű metódus, mely bool mezők feletti szűréshez állít elő "","Igen","Nem" tartalmú SelectList-et nyelvhelyesen.
  • IManage interface létrehozása, mely meghatározza egy karbantartást biztosító osztály elvárt tulajdonságait és módszereit.
  • ITranslation interface létrehozása, mely meghatározza egy fordítási szolgáltatásokat biztosító osztály elvárt tulajdonságait és módszereit.
  • TranslationBase absztrakt osztály létrehozása egyéb osztályok alapozásához.
  • Frissítés a Microsoft.AspNet.Mvc 5.2.7 változatára.
  • Frissítés a Newtonsoft.Json 12.0.1 változatára.
  • Frissítés a VRH.Log4Pro.MultiLanguageManager 3.1.0 változatára.

1.17.0 (2018.12.17) Compatible changes - debug:

  • XmlConnection konstruktora levágja az elején és végén található white space és '/' karaktereket, a kapcsolati sztringben megadott 'element' össztevőről.
  • Kikerült a debug verzióból pár diagnosztikai célú üzenet kiírás.
  • VariableDictionary-ben elérhető a szeparátorok listája 'Separators' néven.
  • VariableDictionary.FindVariables visszatér egy listával, mely egy szövegben megtalált változók neveit tartalmazza.
  • XmlParser felépít egy XmlVarsInfo és egy ConectionStringsInfo szótárat. A szótár elemei VariableInfo típusúak, mely elmondja egy változóról, melyik fájlban található, milyen XPath kereső kifejezéssel érhető el, és honnan származik.

1.16.1 (2018.11.15) Patches - debug:

  • WebCommon.ErrorListBuilder már nem teszi be a '(0)'-kat a hibaüzenetbe.

1.16.0 (2018.10.26) Compatible changes - debug:

  • RedisConnection osztály beépítése. A WebMonitor és RedisManager számára hasznos, hogy egységes és következetes legyen.
  • CommonModel osztály beépítése rendszeresen használt tulajdonságokkal és metódusokkal.

1.15.1 (2018.10.20) Patches - debug:

  • A Microsoft.AspNet.Mvc 5.2.6 függőség beállítása. Frissítés már megvolt korábban.

1.15.0 (2018.10.11) Compatible changes - debug:

  • WebCommon.Base10ToBase() függvény beépítése, ami egy 10-es számrendszerbeli számot alakít át 2-36 számrendszer beli számmá.
  • XmlLinqBase.GetXElement metódusán kellett módosítani.

1.14.0 (2018.09.27) Compatible API changes - debug:

  • CookieApplicationSettings-ben EntryPointName lett a ReferenceName.

1.13.0 (2018.09.25) Compatible API changes - debug:

  • Lehet több XmlParser elem egy xml paraméterfájlban illetve egy konfigurációs elem alatt.
  • XmlParser elem tartalmazhat egy hivatkozást egy külső fájlra az Include attribútummal.

1.12.0 (2018.08.24) Compatible API changes - debug:

  • Frissítés a VRH.Log4Pro.MultilanguageManager 3.0.0-ás változatára.
  • DataTables támogatás: DataTables és DataTablesIn osztályok bevezetése.
  • CRUD támogatás: MasterData statikus osztály bevezetése.

1.11.0 (2018.08.13) Compatible API changes - debug:

  • CookieApplicationSettings osztály kiegészült a "WelcomeUrl" tulajdonsággal, hogy a Layout be tudja állítani a logo, és login/logout link értékét.

1.10.1 (2018.08.10) Patches - debug:

  • Az XmlParser hibakezelésén kellet javítani. Hibát dob, ha a konfigurációban megadott elem nem létezik.

1.10.0 (2018.08.10) Compatible API changes - debug:

  • CookieApplicationSettings osztály kiegészült a "ConfigurationName" és a "ReferenceName" tulajdonságokkal, hogy ez is megőrződjön az alkalmazás cookie-ban.

1.9.2 (2018.08.08) Patches - debug:

  • Az UrlElement.GetUrl() StringBuilder-t használ, és a paraméterek nevében vagy értékében előforduló "?&=" jeleket a szabványos URL encode értékre cseréli.
  • A ParameterSeparating metódus kapott egy túlterhelést (overload), amelyben megadható a feldolgozandó NameValueCollection.

1.9.1 (2018.08.01) Patches - debug:

  • A WebCommon.RealPath metódust kellet pontosítani.

1.9.0 (2018.07.27) Compatible API changes - debug:

  • VariableDictionary osztály bevezetése. A VariableCollection a 2.0-ás változattól már nem lesz használható.
  • ParameterQuery osztály megszűnt. A szolgáltatások a BaseController osztály ParameterSeparating metódusába vándoroltak.
  • 'USERNAME' rendszerváltozó automatikusan hozzáadódik az OtherParametersszótárhoz.

1.8.3 (2018.07.26) Patches - debug:

  • URL paraméterek azonnal hozzáadódnak az XmlVars gyűjteményhez, és ezeknek az értékét nem módosíthatja, ha van ilyen változó az xml paraméterfájlokban.

1.8.2 (2018.07.25) Patches - debug:

  • XmlParser és BaseController osztályokban történtek javítások.
  • A VariableCollection csak olyan változókat tartalmazhat, amelyek neve megfelel a "[a-zA-Z_]\w*" reguláris kifejezésnek.
  • XmlLinqBase az IDisposable osztályból származtatva

1.8.1 (2018.07.24) Patches - debug:

  • XmlConnection konstruktorában történt javítás. Alapértelmezett fájl és konfigurációnév megadással kapcsolatban.

1.8.0 (2018.07.16) Compatible API changes - debug:

  • ParameterQuery osztály bevezetése. A .NET-es akciók Request.QueryString-jének szétválasztása a kért és egyéb paraméterekre.
  • XmlConnection osztály bevezetése. XmlParser connection string feldolgozásához.
  • XmlParser új konstruktorokkal bővült, melyek alkalmasak az XmlConnection, ParameterQuery osztályok és az XmlParser connection string fogadására a példányosításkor.

1.7.1 (2018.06.30) Patches - debug:

  • A CookieApplicationSettings osztályban a Set metódusban a ProductName és CopyRight UrlEncode után kerül mentésre, és visszaolvasáskor UrlDecode történik. (A cookie nem tud letárolni UNICODE-ot.)

1.7.0 (2018.05.30) Compatible API changes - debug:

  • Elkészült egy újabb XmlParser konstruktor, mely nem konfigurációs nevet vár, hanem egy létező xml fájl nevét. Ez a konstruktor feldolgozza a gyökér XmlParser változóit, de nem foglalkozik annak Configuration elemével.

1.6.0 (2018.05.11) Compatible API changes:

  • ValidationExtension static osztály hozzáadása (a régi DataTables.dll-ből átemelve)

1.5.0 (2018.04.13) Compatible API changes:

  • CookieApplicationSettings osztály létrehozása.
  • A WebCommon static osztály létrehozása, a VRH web alkalmazásokban alapvetően vagy sokszor használt tulajdonságok és metódusok eléréséhez.
  • ViewModes enum létrehozása (Desktop, Mobile, Touch) értékekkel.

1.4.3 (2018.03.21) Patches:

  • VariableCollection.Substitution nem dob hibát, ha null értékű sztringet kap a behelyettesítéshez. Null-t add vissza ilyenkor.

1.4.2 (2018.03.19) Patches:

  • XmlParser újra abstract.

1.4.1 (2018.03.07) Compatible API changes:

  • XmlParser az érték nélküli változókat is létrehozza üres string értékkel.
  • Rendszerváltozó nevű XmlVar esetén hiba keletkezik.
  • Dokumentácó bővítése, javítása.

1.4.0 (2018.03.03) Compatible API changes:

  • XmlLinqBase, XmlCondition, XmlVariable és XmlParser osztály létrehozása, az XML feldolgozás egységesítéséhez.
  • Dokumentácó bővítése, javítása.

1.3.2 (2018.01.19) Patches:

  • UrlElement osztályban javítás és módosítás (konstruktor).

1.3.1 (2017.12.19) Patches:

  • Dokumentáció bővítése, pontosítása.
  • Új név került be a rendszerváltozók közé, a "USERNAME".

1.3.0 (2017.12.08) Compatibility API changes::

  • VariableCollection osztály létrehozása, az XML feldolgozáskor alkalmazott változók behelyettesítésére, és egységben tartására.
  • SystemVariableNames statikus osztály létrehozása a rendszerváltozók egységes kezelése céljából.
  • Dokumentációk bővítése és pontosítása.

1.2.3 (2017.11.30) Patches:

  • Dokumentáció bővítése, pontosítása.
  • BaseController.ErrorMessageBuilder már magától levágja az utolsó soremelést.

1.2.2 (2017.11.07) Patches:

  • A Vrh.Common.Serialization.Structures Lib kimozgatása az iScheduler alól ebbe az önálló solutionbe, és átnevezése Vrh.Web.Common.Lib-re
  • Nuget csomaggá alakítás