Become a partner and get 10% off your first purchase of Norlex Pool & Spa chemicals.

Why should you choose Norlex Pool & Spa as your supplier?

  • We are the experts with many years of experience in the field of clean water solutions.
  • We provide the highest quality and performance specialty chemicals with own formulations.
  • We offer filtration systems and a comprehensive range of cleaning products.
  • We are ready to train you and advise you on the right choice of products and tools.   
  • We offer easy ordering and quick delivery from several locations and stocks in DK.
  • All our products are registered and follow European standards and regulations.

Please fill out the template for registration below:

Exception in template (Designs\norlex\Forms/Form\espresso.cshtml): System.IO.FileNotFoundException: Could not find file 'C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\cabdcmqu.dll'.
File name: 'C:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp\cabdcmqu.dll'
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.File.InternalReadAllBytes(String path, Boolean checkHost)
at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
at Microsoft.CSharp.CSharpCodeGenerator.FromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
at RazorEngine.Compilation.DirectCompilerServiceBase.Compile(TypeContext context)
at RazorEngine.Compilation.DirectCompilerServiceBase.CompileType(TypeContext context)
at RazorEngine.Templating.TemplateService.CreateTemplateType(String razorTemplate, Type modelType)
at RazorEngine.Templating.TemplateService.GetTemplate[T](String razorTemplate, Object model, String cacheName)
at RazorEngine.Templating.TemplateService.GetTemplate(String razorTemplate, Object model, String cacheName)
at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName)
at RazorEngine.Razor.Parse[T](String razorTemplate, T model, String cacheName)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
@using System.Dynamic; @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> @functions{ public string getRequiredSymbol( bool required ) { string result = string.Empty; if ( required == true ) { result = "<span class=\"text-danger\">*</span>"; } return result; } public string getDefaultSelected( bool selected, string type = "" ) { string result = string.Empty; if ( selected == true ) { if ( type == "select") { result = "selected"; } else if ( type == "radio" || type == "checkbox" || type == "checkboxlist" ) { result = "checked"; } } return result; } public string getClassList( List<string> classList, string type = "" ) { string result = string.Empty; if ( type == "textinput" || type == "email" || type == "textarea" ) { classList.Add("form-control"); } else if ( type == "radio" || type == "checkbox" || type == "checkboxlist" ){ classList.Add("custom-control-input"); } else if ( type == "select" || type == "date" ){ classList.Add("custom-select"); classList.Add("w-100"); } else if ( type == "file" ){ classList.Add("w-100"); } else if ( type == "text" ){ classList.Add("mb-0"); } if ( classList.Count > 0 ) { result = String.Join( " ", classList ).Trim(); } return result; } } @{ dynamic form = new { id = GetString("Form.HtmlId"), action = GetString("Form.Action"), systemFields = GetString("Form.SystemFields"), scriptOnSubmit = GetString("Form.OnSubmit"), scriptSpamControl = GetString("Form.SpamScript"), labelBold = GetBoolean("Form.LabelBold"), labelOverField = GetBoolean("Form.LabelOverField"), classList = new List<string>() { "e-form-dw", "js-e-form-dw", GetString("Form.CssClass") }, useCustomControls = true, submitMax = GetInteger("Form.MaxSubmits"), submitCount = GetInteger("Form.SubmitCount") }; if ( form.labelBold == true ) { form.classList.Add( "e-form-labels-bold" ); } if ( form.labelOverField == true ) { form.classList.Add( "e-form-labels-hide" ); } } @if ( form.submitMax > 0 && form.submitCount >= form.submitCount ) { @* <div class="alert alert-info"><p>Tilmelding til dette event er lukket. <a href="/kontakt">Kontakt os</a> for at blive skrevet på ventelisten.</p></div> *@ } else{ <form method="post" action="@form.action" enctype="multipart/form-data" class="@getClassList( form.classList )" id="@form.id"> @form.systemFields @foreach ( LoopItem itemField in GetLoop("Fields") ) { dynamic field = new { type = itemField.GetString("Field.Type").ToLower(), id = string.Format("{0}-{1}-{2}", form.id, itemField.GetString("Field.HtmlId"), itemField.GetString("Field.ID") ), name = itemField.GetString("Field.SystemName"), title = itemField.GetString("Field.Name"), placeholder = itemField.GetString("Field.Placeholder"), value = ( string.IsNullOrEmpty( itemField.GetString("Field.Value") ) == false ? itemField.GetString("Field.Value") : itemField.GetString("Field.DefaultValue") ), defaultValue = itemField.GetString("Field.DefaultValue"), required = itemField.GetBoolean("Field.Required"), description = itemField.GetString("Field.Description"), classList = new List<string>() { itemField.GetString("Field.CssClass") }, html = itemField.GetString("Field.Control"), }; if ( field.required == true ) { field.classList.Add( "required" ); } if ( field.type == "email" ) { field.classList.Add( "email" ); } if ( field.type == "textinput" || field.type == "email" ) { <fieldset class="form-group"> <label class="form-control-label" for="@field.id"> @field.title @getRequiredSymbol( field.required ) @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </label> <input type="text" name="@field.name" id="@field.id" value="@field.value" placeholder="@field.placeholder" class="@getClassList( field.classList, field.type )"> <div class="js-e-form-validation-msg d-none"></div> </fieldset> } else if ( field.type == "textarea" ) { <fieldset class="form-group"> <label class="form-control-label" for="@field.id"> @field.title @getRequiredSymbol( field.required ) @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </label> <textarea name="@field.name" id="@field.id" placeholder="@field.placeholder" class="@getClassList( field.classList, field.type )">@field.value</textarea> <div class="js-e-form-validation-msg d-none"></div> </fieldset> } else if ( field.type == "checkbox" ) { <fieldset class="form-group"> <div class=""> <label class="custom-control custom-checkbox"> <input type="checkbox" class="@getClassList( field.classList, field.type )" name="@field.name" id="@field.id" value="@field.value" @getDefaultSelected( ( field.defaultValue.ToLower() == "true" ) , field.type )> <span class="custom-control-indicator"></span> <span class="custom-control-description">@field.title @getRequiredSymbol( field.required )</span> </label> <div class="js-e-form-validation-msg d-none"></div> @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </div> </fieldset> } else if ( field.type == "checkboxlist" ) { <fieldset class="form-group"> <legend class="form-legend"> @field.title @getRequiredSymbol( field.required ) @if ( @field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </legend> <div class="js-e-form-validation-msg d-none"></div> @foreach( LoopItem option in itemField.GetLoop("Options") ) { <div class=""> <label class="custom-control custom-checkbox"> <input type="checkbox" class="@getClassList( field.classList, field.type )" name="@field.name" value="@option.GetString("Option.Value")" @getDefaultSelected( @option.GetBoolean("Option.DefaultSelected"), field.type )> <span class="custom-control-indicator"></span> <span class="custom-control-description small">@option.GetString("Option.Text")</span> </label> </div> } </fieldset> } else if ( field.type == "radio" ) { <fieldset class="form-group"> <legend class="form-legend"> @field.title @getRequiredSymbol( field.required ) @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </legend> <div class="js-e-form-validation-msg d-none"></div> @foreach( LoopItem option in itemField.GetLoop("Options") ) { <div class=""> <label class="custom-control custom-radio"> <input type="radio" class="@getClassList( field.classList, field.type )" name="@field.name" value="@option.GetString("Option.Value")" @getDefaultSelected( @option.GetBoolean("Option.DefaultSelected"), field.type )> <span class="custom-control-indicator"></span> <span class="custom-control-description">@option.GetString("Option.Text")</span> </label> </div> } </fieldset> } else if ( field.type == "select" ) { <fieldset class="form-group"> <label class="form-control-label" for="@field.id"> @field.title @getRequiredSymbol( field.required ) @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </label> <select name="@field.name" id="@field.id" class="@getClassList( field.classList, field.type )"> @foreach( LoopItem option in itemField.GetLoop("Options") ) { <option value="@option.GetString("Option.Value")" @getDefaultSelected( @option.GetBoolean("Option.DefaultSelected"), field.type )> @option.GetString("Option.Text") </option> } </select> <div class="js-e-form-validation-msg d-none"></div> </fieldset> } else if ( field.type == "date" ) { <fieldset class="form-group"> <label class="form-control-label" for="@field.id"> @field.title @getRequiredSymbol( field.required ) @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </label> <input type="date" name="@field.name" id="@field.id" value="@field.value" placeholder="@field.placeholder" class="@getClassList( field.classList, field.type )"> </fieldset> } else if ( field.type == "file" ) { <fieldset class="form-group"> <label class="form-control-label" for="@field.id"> @field.title @getRequiredSymbol( field.required ) </label> <p class="@getClassList( field.classList, field.type )">@field.html</p> </fieldset> } else if ( field.type == "hidden" ) { <input type="hidden" name="@field.name" id="@field.id" value="@field.value" class="@getClassList( field.classList, field.type )"> } else if ( field.type == "submit" ) { <fieldset class="form-group"> <button type="submit" class="btn btn-primary">@field.title</button> </fieldset> } else if ( field.type == "text" ) { <div class="form-group"> <p class="@getClassList( field.classList, field.type )">@field.html</p> @if ( field.description != "" ) { <p class="small form-text text-muted mb-0">@field.description</p> } </div> } else{ <fieldset class="form-group"> Field type not suported: @field.type @if ( field.title != "" ) { <label class="form-control-label" for="@field.id">@field.title</label> } @field.html @if ( field.description != "" ) { <small class="form-text text-muted">@field.description</small> } </fieldset> } } <script> var e4 = e4 || {}; e4.data = e4.data || {}; e4.data.forms = e4.data.forms || {}; e4.data.forms.dwSpamScripts = e4.data.forms.dwSpamScripts || {}; e4.data.forms.dwSpamScripts['@form.id'] = @form.scriptSpamControl; </script> </form> }
keyboard_arrow_up