<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mattia Re</title>
    <description>The latest articles on DEV Community by Mattia Re (@remattia).</description>
    <link>https://dev.to/remattia</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4146012%2F254a0c52-7a34-4e21-8256-afd2e5facaf3.png</url>
      <title>DEV Community: Mattia Re</title>
      <link>https://dev.to/remattia</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/remattia"/>
    <language>en</language>
    <item>
      <title>Looking for feedback on a library I built to auto-wire API validation errors to Blazor WASM form fields</title>
      <dc:creator>Mattia Re</dc:creator>
      <pubDate>Sun, 27 Sep 2026 20:59:42 +0000</pubDate>
      <link>https://dev.to/remattia/looking-for-feedback-on-a-library-i-built-to-auto-wire-api-validation-errors-to-form-fields-49fl</link>
      <guid>https://dev.to/remattia/looking-for-feedback-on-a-library-i-built-to-auto-wire-api-validation-errors-to-form-fields-49fl</guid>
      <description>&lt;p&gt;​Hey everyone!&lt;/p&gt;

&lt;p&gt;​I recently got tired of writing repetitive code to catch server-side API errors and display them in the UI.&lt;br&gt;
​To solve this, I built an SDK that automatically walks client-side model paths (&lt;code&gt;address.city&lt;/code&gt;, &lt;code&gt;items[0].name&lt;/code&gt;) and maps RFC 9457 (Problem Details) errors straight into native Blazor &lt;code&gt;FieldIdentifier&lt;/code&gt; instances via a custom &lt;code&gt;HttpClient&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  ​What it does
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Walks nested C# model graphs automatically using a lightweight path tokenizer.&lt;/li&gt;
&lt;li&gt;Resolves standard lists, arrays and custom numeric indexers.&lt;/li&gt;
&lt;li&gt;Handles parameter collisions across binding sources (e.g., query vs. body parameters) via an opt-in &lt;code&gt;[Disambiguate]&lt;/code&gt; attribute you can apply on your controllers.&lt;/li&gt;
&lt;li&gt;Easily integrates with Blazor’s &lt;code&gt;EditContext&lt;/code&gt; and &lt;code&gt;ValidationMessageStore&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It works with reflection and is extensible for your own needs. You can customize the way it binds errors by implementing your own factory or change the way it accesses objects by adding more accessors to the DI container.&lt;/p&gt;

&lt;p&gt;I tried to keep the requirements fairly limited. The only things you have to accept are responding with problem details objects when an error occurs and using the specialized HttpClient.&lt;/p&gt;

&lt;p&gt;The idea is that you can call your APIs and forget about wiring errors.&lt;/p&gt;

&lt;p&gt;I'd love to get some feedback, edge-case bug reports or just constructive criticism from the community.&lt;/p&gt;

&lt;p&gt;​It's open-source, published on NuGet, and has full docs setup:&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Mattia-Re/MRX-SDK" rel="noopener noreferrer"&gt;https://github.com/Mattia-Re/MRX-SDK&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://mrx.mattiare.com" rel="noopener noreferrer"&gt;https://mrx.mattiare.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folepdes64ncc6jnp3dlw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Folepdes64ncc6jnp3dlw.png" alt=" " width="799" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftqvgr5xv5pylsd3t9m0i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftqvgr5xv5pylsd3t9m0i.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>blazor</category>
      <category>dotnet</category>
      <category>aspnetcore</category>
      <category>dx</category>
    </item>
  </channel>
</rss>
