Rijpaard (springen en dressuur)














Tuigpaard





Gelders paard


Jong KWPN



Toepassen
Error executing template "Designs/Kwpn/ItemPublisher/Details/NewsDetail.cshtml"
System.IO.IOException: The process cannot access the file 'D:\inetpub\wwwroot\www.kwpn.nl\Files\Templates\Designs\Kwpn\Translations.xml' because it is being used by another process.
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)
at Dynamicweb.Rendering.Translation.Source.WriteDocument(XmlDocument document)
at Dynamicweb.Rendering.Translation.Source.Save()
at Dynamicweb.Rendering.Translation.Source.UpdateTranslationSource(Source source, IEnumerable`1 newKeys, String designName, IEnumerable`1 cultures)
at Dynamicweb.Rendering.Template.TranslateText(String text, String defaultValue, String cultureName)
at Dynamicweb.Rendering.TemplateBase`1.Translate(String text, String defaultValue)
at CompiledRazorTemplates.Dynamic.RazorEngine_ed10c6f01b1e48bab8483e58c10fe2fe.Execute() in D:\inetpub\wwwroot\www.kwpn.nl\Files\Templates\Designs\Kwpn\ItemPublisher\Details\NewsDetail.cshtml:line 106
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @using System.Globalization; 2 @using System.Linq; 3 @using Kwpn.Models.Constants; 4 @using Kwpn.Models.Enumerations; 5 @using Kwpn.Repository.Helpers; 6 @using System.Web.Mvc; 7 @using Kwpn.Core.Services.Abstract; 8 @using Kwpn.Core.Helpers; 9 10 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 11 12 @{ 13 var jumpVideoService = DependencyResolver.Current.GetService<IJumpPortalVideoService>(); 14 var videoIds = new List<string>(4); 15 16 for (int i = 1; i <= 4; i++) 17 { 18 if (int.TryParse(GetInteger($"ItemPublisher:Item.VideoId{i}.Value").ToString(), out int videoId)) 19 { 20 videoIds.Add(videoId.ToString()); 21 } 22 } 23 24 var collection = jumpVideoService.GetVideosByIds(videoIds.ToArray()); 25 26 var culture = GetGlobalValue("Global:Area.LongLang"); 27 var cultureInfo = new CultureInfo(GetGlobalValue("Global:Area.LongLang")); 28 var newsParagraphId = GetInteger("ItemPublisher:Global.ParagraphId"); 29 30 // news detail 31 var newsTitle = GetString("ItemPublisher:Item.NewsTitle.Value"); 32 var newsDate = GetDate("ItemPublisher:Item.NewsDate.Value"); 33 var newsDateTime = FormatHelpers.GetDateTime(newsDate, null, cultureInfo, Translate("EventDateDevider", "to")); 34 var newsText = GetString("ItemPublisher:Item.NewsText.Value"); 35 if (!string.IsNullOrEmpty(newsText) && !(newsText.IndexOf("<p>") >= 0 || newsText.IndexOf("<br>") >= 0)) 36 { 37 newsText = newsText.Replace("\n", "<br />"); 38 } 39 40 //image 41 var newsCategories = GetString("ItemPublisher:Item.NewsCategories.Value"); 42 var newsImage = GetString("ItemPublisher:Item.NewsImage.Value"); 43 if (string.IsNullOrWhiteSpace(newsImage) && !string.IsNullOrWhiteSpace(newsCategories)) 44 { 45 newsImage = ImageHelper.GetDefaultImageByCategory(ImageType.NewsCategoryImage, newsCategories.Split(',').FirstOrDefault().Trim()); 46 } 47 48 // extra 49 var noteText = GetString("ItemPublisher:Item.NoteText.Value"); 50 var newsRegion = KwpnNewsHelper.GetNewsRegion(GetString("ItemPublisher:Item.Regions"), culture, noteText); 51 if (!string.IsNullOrWhiteSpace(noteText)) { noteText = string.Format("<div class='note'>{0}</div>", noteText); } 52 var hightlightText = GetString("ItemPublisher:Item.HighlightText.Value"); 53 if (!string.IsNullOrWhiteSpace(hightlightText)) { hightlightText = string.Format("<div class='highlight'>{0}</div>", hightlightText); } 54 var notification = GetString("ItemPublisher:Item.Notification.Value"); 55 56 // linked horsed 57 var linkedHorses = HorseHelper.GetHorsesByAnimalCodes(GetString("ItemPublisher:Item.Horses.Value"), GetGlobalValue("Global:Area.LongLang")); 58 var iLinkedHorseCounter = 0; 59 60 // linked 61 var listOfEventItems = new List<Dynamicweb.Content.Items.Item>(); 62 var kwpnEvents = GetString("ItemPublisher:Item.KwpnEvents.Value"); 63 if (!string.IsNullOrWhiteSpace(kwpnEvents)) 64 { 65 var kwpnEventIdList = kwpnEvents.Split(',').ToList(); 66 foreach (var kwpnEventId in kwpnEventIdList) 67 { 68 var eventItem = Dynamicweb.Content.Items.ItemManager.Storage.GetById(StringConstants.ItemTypes.Event, kwpnEventId); 69 if (eventItem != null) 70 { 71 listOfEventItems.Add(eventItem); 72 } 73 } 74 } 75 76 var showAside = (listOfEventItems.Any() || linkedHorses.Any()); 77 78 var imageMdClass = "col-md-12"; 79 var contentMdClass = "col-md-7 col-md-pull-4"; 80 81 // social media share 82 var openGraphTitle = newsTitle; 83 var openGraphUrl = string.Format("{0}{1}", AreaHelper.GetHost(), System.Web.HttpContext.Current.Request.RawUrl); 84 var openGraphImage = newsImage; 85 var openGraphDefaultImage = string.Format("{0}/Files/Templates/Designs/Kwpn/Images/OpenGraph_NoImg.jpg", AreaHelper.GetHost()); 86 if (string.IsNullOrWhiteSpace(openGraphImage)) 87 { 88 var images = FormatHelpers.GetImagesInHTMLString(GetString("ItemPublisher:Item.NewsText.Value")); 89 var firstImage = ""; 90 if (images.Any()) 91 { 92 firstImage = images.FirstOrDefault(); 93 if (!string.IsNullOrWhiteSpace(firstImage)) 94 { 95 openGraphImage = System.Text.RegularExpressions.Regex.Match(firstImage, "<img.+?src=[\"'](.+?)[\"'].+?>", System.Text.RegularExpressions.RegexOptions.IgnoreCase).Groups[1].Value; 96 97 } 98 } 99 } 100 if (string.IsNullOrWhiteSpace(openGraphImage) || openGraphImage.Length < 10) // root directory left overs negeren: /Files/ 101 { 102 openGraphImage = openGraphDefaultImage; 103 } 104 var openGraphDescription = GetString("ItemPublisher:Item.NewsText.Value").HtmlRemove().ClipLength(100, true); 105 var openGraphLocale = GetGlobalValue("Global:Area.LongLang").Replace("-", "_"); 106 var openGraphSiteName = Translate("OpenGraph_SiteName", "KWPN Royal Dutch Sport Horse"); 107 108 // SEO: seoPage is used as base url for virtual pageviews 109 var seoPage = GetGlobalValue("Global:Pageview.Url"); 110 if (seoPage.Contains("?")) 111 { 112 seoPage = seoPage.Split('?')[0]; 113 } 114 seoPage = string.Format("{0}/{1}/{2}", seoPage, GetString("ItemPublisher:Item.Field.Id"), GetString("ItemPublisher:Item.NewsTitle.Value").Replace(" ", "-").ToLower().UrlEncode()); 115 116 <div class="break-grid content-container page-content-aside" id="news-detail"> 117 <div class="break-grid-background"> 118 <div class="in-grid news-content"> 119 <div class="row"> 120 <div class="background-head-aside-xs"> 121 <div class="background-head-xs"> 122 <div class="col-xs-12 page-header"> 123 <div class="row"> 124 <div class="col-xs-12 col-md-7"> 125 <div class="row"> 126 @if (!string.IsNullOrWhiteSpace(noteText)) 127 { 128 <div class="col-md-6 hidden-xs hidden-sm">@noteText</div> 129 } 130 @if (!string.IsNullOrWhiteSpace(hightlightText)) 131 { 132 <div class="col-md-6 hidden-xs hidden-sm">@hightlightText</div> 133 } 134 </div> 135 <div class="row"> 136 <div class="col-xs-12"> 137 <h1>@newsTitle</h1> 138 </div> 139 </div> 140 <div class="row"> 141 <div class="col-xs-12"> 142 @if (!string.IsNullOrWhiteSpace(newsDateTime)) 143 { 144 <span class="date"><i class="fa fa-clock-o"></i> @newsDateTime</span> 145 } 146 <div class="visible-xs"></div> 147 @if (!string.IsNullOrWhiteSpace(newsRegion)) 148 { 149 <span class="region"><i class="fa fa-location-arrow"></i> @newsRegion</span> 150 } 151 </div> 152 </div> 153 </div> 154 @if (!string.IsNullOrEmpty(newsImage)) 155 { 156 <div class="col-xs-12 hidden-md hidden-lg"> 157 <div class="news-image"><img src="@newsImage" alt="News image" /></div> 158 </div> 159 } 160 @if (!string.IsNullOrWhiteSpace(noteText)) 161 {<div class="col-xs-12 hidden-md hidden-lg">@noteText</div>} 162 @if (!string.IsNullOrWhiteSpace(hightlightText)) 163 {<div class="col-xs-12 hidden-md hidden-lg">@hightlightText</div>} 164 @if (!string.IsNullOrWhiteSpace(notification)) 165 { 166 <div class="col-xs-12 hidden-md hidden-lg"> 167 <div class="notification"> 168 @notification 169 </div> 170 </div> 171 } 172 </div> 173 </div> 174 </div> 175 <div class="background-aside-xs"> 176 <aside class="col-xs-12 col-md-4 col-md-push-8 news-detail-aside"> 177 178 <!-- /204473129/NieuwsDetail/Banner1 --> 179 <div id='div-gpt-ad-banner1-1' class="google-container google-container--size--b google-container--center google-container--margin-bottom google-container--margin-top-p"> 180 <script> 181 googletag.cmd.push(function () { googletag.display('div-gpt-ad-banner1-1'); }); 182 </script> 183 </div> 184 185 @if (showAside) 186 { 187 <div class="page-aside"> 188 @if (linkedHorses.Any()) 189 { 190 <h2 id="linkedhorses-aside-title" data-childId="linkedhorses-aside-content" class="notactive"><span>@Translate("LinkedHorses", "Linked horses")</span></h2> 191 <div id="linkedhorses-aside-content" class="aside-content notactive"> 192 <div class="linkedHorses"> 193 @foreach (var linkedHorse in linkedHorses) 194 { 195 // modulo for row color display 196 var mod = "0"; 197 if (iLinkedHorseCounter % 2 == 0) 198 { 199 mod = "1"; 200 } 201 202 // gender info 203 var genderClass = "fa-question"; 204 var genderAbbr = ""; 205 var gender = Kwpn.Models.Enumerations.Gender.UNKNOWN; 206 Enum.TryParse(linkedHorse.Gender.ToUpper(), out gender); 207 switch (gender) 208 { 209 case Kwpn.Models.Enumerations.Gender.HENGST: 210 genderClass = "fa-mars"; 211 genderAbbr = Translate("Stallion", "Stallion"); 212 break; 213 case Kwpn.Models.Enumerations.Gender.MERRIE: 214 genderClass = "fa-venus"; 215 genderAbbr = Translate("Mare", "Mare"); 216 break; 217 case Kwpn.Models.Enumerations.Gender.RUIN: 218 genderClass = "fa-mars"; //fa-mars-stroke-h 219 genderAbbr = Translate("Gelding", "Gelding"); 220 break; 221 } 222 223 // horse info 224 var horseName = HorseHelper.GetHorseName(linkedHorse.SportsName, linkedHorse.AnimalName, linkedHorse.DateOfBirth); 225 226 // father info 227 var fatherName = ""; 228 var father = linkedHorse.GetPredigreeByPrefix(Kwpn.Models.Constants.StringConstants.PedigreePrefixes.Father); 229 if (father != null) 230 { 231 fatherName = father.AnimalName; 232 } 233 else 234 { 235 fatherName = Translate("Unknown", "Unknown"); 236 } 237 var fatherNameAbbr = Translate("FathersName", "Fathers name").JsEncode(); 238 239 // mothers father info 240 var mothersFatherName = ""; 241 var mothersFather = linkedHorse.GetPredigreeByPrefix(Kwpn.Models.Constants.StringConstants.PedigreePrefixes.MothersFather); 242 if (mothersFather != null) 243 { 244 mothersFatherName = mothersFather.AnimalName; 245 } 246 else 247 { 248 mothersFatherName = Translate("Unknown", "Unknown"); 249 } 250 var mothersFatherNameAbbr = Translate("MothersFathersName", "Mothers fathers name").JsEncode(); 251 var databaseLink = HorseHelper.GetHorseInfoPageUrl(GetGlobalValue("Global:Area.LongLang"), linkedHorse.AnimalCode); 252 <a href="@databaseLink"> 253 <div class="row mod-@mod"> 254 <div class="col-xs-2"> 255 <span class="gender"><i class="fa @genderClass" title='@genderAbbr.JsEncode()'></i></span> 256 </div> 257 <div class="col-xs-10"> 258 <span class="name">@horseName</span> 259 <span class="parents"> 260 <abbr title='@fatherNameAbbr'>@fatherName</abbr> x <abbr title='@mothersFatherNameAbbr'>@mothersFatherName</abbr> 261 </span> 262 </div> 263 </div> 264 </a> 265 iLinkedHorseCounter++; 266 } 267 </div> 268 </div> 269 } 270 @if (listOfEventItems.Any()) 271 { 272 var kwpnEventCounter = 0; 273 var eventPageId = AreaHelper.GetAreaItemStringValueBySystemName(StringConstants.PageIdSystemNames.EventPageId); 274 275 if (!string.IsNullOrWhiteSpace(eventPageId)) 276 { 277 <h2 id="linkedevents-aside-title" data-childId="linkedevents-aside-content" class="notactive"><span>@Translate("LinkedEvents", "Linked events")</span></h2> 278 <div id="linkedevents-aside-content" class="aside-content notactive"> 279 <div class="linkedEvents"> 280 @foreach (var kwpnEvent in listOfEventItems) 281 { 282 // modulo for row color display 283 var mod = "0"; 284 if (kwpnEventCounter % 2 == 0) 285 { 286 mod = "1"; 287 } 288 var kwpnEventId = ItemHelper.GetItemValue<int>(kwpnEvent, StringConstants.ItemTypes.Event_Id); 289 var kwpnEventTitle = ItemHelper.GetItemValue<string>(kwpnEvent, StringConstants.ItemTypes.Event_Title); 290 var dateFrom = ItemHelper.GetItemValue<DateTime>(kwpnEvent, StringConstants.ItemTypes.Event_FromDate); 291 var dateTo = ItemHelper.GetItemValue<DateTime>(kwpnEvent, StringConstants.ItemTypes.Event_ToDate); 292 var eventDateTime = FormatHelpers.GetDateTime(dateFrom, dateTo, cultureInfo, Translate("EventDateDevider", "to")); 293 var kwpnEventLink = string.Format("/Default.aspx?ID={0}&itemId={1}:{2}", eventPageId, StringConstants.ItemTypes.Event, kwpnEventId); 294 var customPageLink = ItemHelper.GetItemValue<string>(kwpnEvent, StringConstants.ItemTypes.Event_CustomEventPage); 295 if (!string.IsNullOrEmpty(customPageLink)) 296 { 297 kwpnEventLink = customPageLink; 298 } 299 <a href="@kwpnEventLink"> 300 <div class="row mod-@mod"> 301 <div class="col-xs-2"> 302 <span class="clock"><i class="fa fa-clock-o"></i></span> 303 </div> 304 <div class="col-xs-10"> 305 <span class="date-time">@eventDateTime</span> 306 <span class="title">@kwpnEventTitle</span> 307 </div> 308 </div> 309 </a> 310 kwpnEventCounter++; 311 } 312 </div> 313 </div> 314 } 315 } 316 </div> 317 } 318 319 320 321 </aside> 322 </div> 323 </div> 324 325 <article class="col-xs-12 @contentMdClass page-content news-detail-output"> 326 @if (!string.IsNullOrWhiteSpace(notification)) 327 { 328 <div class="row"> 329 <div class="hidden-xs hidden-sm col-md-12"> 330 <div class="notification"> 331 @notification 332 </div> 333 </div> 334 </div> 335 } 336 337 @*IMAGE FOR LARGE VIEW*@ 338 @if (!string.IsNullOrEmpty(newsImage)) 339 { 340 // KWPN-1733 Use image handler because content managers upload huge images from the content section of the CMS, which causes them not to be scaled immediately on upload 341 newsImage = $"/Admin/Public/GetImage.ashx?Image={newsImage}&Crop={(int)Kwpn.Models.Enumerations.ImageCrop.KeepAspectRatio}&Format=jpg&Width=800&Height=600&Compression=75&fillcanvas=false"; 342 <div class="row hidden-xs hidden-sm"> 343 <div class="@imageMdClass"> 344 <div class="news-image" style="background-image: url('@newsImage');"> 345 </div> 346 </div> 347 </div> 348 } 349 350 @if (!string.IsNullOrWhiteSpace(newsText)) 351 { 352 <div class="row"> 353 <div class="col-xs-12 news-par"> 354 @newsText 355 </div> 356 </div> 357 } 358 @if (collection != null && collection.Any()) 359 { 360 <div class="row kwpntv"> 361 <div class="col-xs-12 kwpntv--category-topx"> 362 <div class="result-container kwpntv-news-video-results" id="kwpntv-news-video-results-@newsParagraphId"></div> 363 </div> 364 </div> 365 366 foreach (Kwpn.Models.Jump.VideoResponse video in collection) 367 { 368 369 <div class="col-xs-12 col-md-6"> 370 <a href="@video.Url" target="_blank"> 371 <div class="embed-responsive embed-responsive-16by9"> 372 <img src="@VideoHelper.ValidateThumbnail(video.Thumbnail)" /> 373 </div> 374 <div class="embed-title"> 375 376 @if (!string.IsNullOrEmpty(video.Title)) 377 { 378 <h3>@video.Title</h3> 379 } 380 381 </div> 382 383 @if (video.Duration != null && (int)video.Duration > 0) 384 { 385 <div class="duration">@TimeHelper.ConvertDuration((int)video.Duration)</div> 386 <div class="duration"><i class="fa fa-clock-o"></i></div> 387 } 388 389 </a> 390 </div> 391 } 392 } 393 </article> 394 </div> 395 </div> 396 </div> 397 @{ 398 var carouselId = $"related-news-{newsParagraphId}"; 399 var carouselInterval = "false"; // false or set interval in ms 400 var carouselPeakNext = false; 401 var carouselResponsiveness = carouselPeakNext ? "col-xs-11 col-md-10 " : "col-xs-12 col-centered"; 402 } 403 <div id="related-news-wrapper" class="hidden"> 404 <div class="in-grid news-content"> 405 <div class="row"> 406 <div class="col-xs-12"><h3>@Translate("RelatedNews", "Related news")</h3></div> 407 </div> 408 </div> 409 <div class="break-grid-extra"> 410 <div class="row"> 411 <div class="@carouselResponsiveness"> 412 <div id="@carouselId" class="carousel carousel-multi slide" data-ride="carousel" data-type="multi" data-interval="@carouselInterval"> 413 <div class="carousel-inner" id="horses-for-sale-results-@newsParagraphId"> 414 <!-- filled by javascript --> 415 </div> 416 <!-- Controls --> 417 <div class="left carousel-control"> 418 <a href="#@carouselId" role="button" data-slide="prev"> 419 <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span> 420 <span class="sr-only">Previous</span> 421 </a> 422 </div> 423 <div class="right carousel-control"> 424 <a href="#@carouselId" role="button" data-slide="next"> 425 <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> 426 <span class="sr-only">Next</span> 427 </a> 428 </div> 429 </div> 430 </div> 431 </div> 432 </div> 433 </div> 434 435 <div class="break-grid-background"> 436 <div class="in-grid news-content"> 437 <div class="row"> 438 <div class="col-xs-12 col-md-6"> 439 <a href="javascript:history.back();" class="backlink"><i class="fa fa-chevron-left"></i>@Translate("BackToOverview", "Back to overview")</a> 440 </div> 441 <div class="col-xs-12 col-md-6"> 442 <div class="socialmediashare pull-right"> 443 <!-- AddToAny BEGIN --> 444 <div class="a2a_kit a2a_kit_size_32 a2a_default_style"> 445 <a class="a2a_dd" href="https://www.addtoany.com/share"></a> 446 <a class="a2a_button_facebook"></a> 447 <a class="a2a_button_twitter"></a> 448 <a class="a2a_button_google_plus"></a> 449 </div> 450 <script async src="https://static.addtoany.com/menu/page.js"></script> 451 <!-- AddToAny END --> 452 </div> 453 </div> 454 </div> 455 </div> 456 </div> 457 </div> 458 459 @SnippetStart("HeaderContent") 460 <meta property="og:title" content="@openGraphTitle" /> 461 <meta property="og:type" content="article" /> 462 <meta property="og:url" content="@openGraphUrl" /> 463 <meta property="og:image" content="@openGraphImage" /> 464 <meta property="og:description" content="@openGraphDescription" /> 465 <meta property="og:locale" content="@openGraphLocale" /> 466 <meta property="og:site_name" content="@openGraphSiteName" /> 467 <meta property="fb:app_id" content="234190117053664" /> 468 <script> 469 SEO.trackPageView("@seoPage"); 470 </script> 471 @SnippetEnd("HeaderContent") 472 473 @SnippetStart("JavascriptsBottom") 474 <script id="related-news-item" type="text/html"> 475 <div class="item"> 476 <div class="carousel-col"> 477 <div class="block clickable" data-url="/Default.aspx?ID=@GetString("ItemPublisher:Global.PageId")&itemId=@Kwpn.Models.Constants.StringConstants.ItemTypes.News:${id}"> 478 <div class="image" style="background-image:url('${image}')"> 479 <div class="date"><i class="fa fa-clock-o"></i> ${MarketplaceHelper.GetSinceDate(newsDate, "@Dynamicweb.Frontend.PageView.Current().Area.Culture.ToLower()")}</div> 480 </div> 481 <div class="bottom"> 482 <div class="text"> 483 <div class="truncate-overflow">${title}</div> 484 </div> 485 </div> 486 </div> 487 </div> 488 </div> 489 </script> 490 <script> 491 $(document).ready(function () { 492 // get related news 493 NewsHelper.GetRelatedNews('@culture', '@GetString("ItemPublisher:Item.Id.Value")', 6, 'related-news-wrapper', '@carouselId', 'horses-for-sale-results-@newsParagraphId', 'related-news-item'); 494 }); 495 </script> 496 @SnippetEnd("JavascriptsBottom") 497 } 498

Lidmaatschap KWPN

  • Iedere maand het KWPN Magazine - In de Strengen
  • Onbeperkt toegang tot KWPN.tv
  • Gratis advertenties plaatsen op KWPN Horses for Sale
Word nu lid
€22,- per jaar

JongKWPN lidmaatschap

  • Ben jij tussen de 16 en 30 jaar?
  • Ben jij geïnteresseerd in fokkerij en sport? 

Dan is JongKWPN vast en zeker iets voor jou! JongKWPN biedt een gevarieerd programma. 

Word nu lid

Official Partners


Het KWPN maakt gebruik van cookies

Wij vragen uw akkoord voor het gebruik van cookies op onze website. Meer informatie is beschikbaar in ons cookiebeleid.

Cookiebeleid