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
- BaseController osztály: MVC-s kontroller alaposztály, hasznos és nélkülözhetetlen szolgáltatásokkal.
- ParameterSeparating metódus: MVC-s akciók Request.QueryString-jének szétválasztása a kért és egyéb paraméterekre.
- 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.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. AVariableCollection
a 2.0-ás változattól már nem lesz használható.ParameterQuery
osztály megszűnt. A szolgáltatások aBaseController
osztályParameterSeparating
metódusába vándoroltak.- 'USERNAME' rendszerváltozó automatikusan hozzáadódik az
OtherParameters
szó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