Skip to content

Binding nullable int to input causes null reference exception #16266

@floreseken

Description

@floreseken

Minimal repro steps

Consider this Blazor page:

<input @bind(TestInt) />

@functions
{
    public int? TestInt { get; set; }

}

Expected result

Page should render without exceptions

Actual result

A nullref exception is thrown:

SCRIPT5022: System.NullReferenceException: Object reference not set to an instance of an object.
  at Microsoft.AspNetCore.Blazor.RenderTree.RenderTreeBuilder.AddAttribute (System.Int32 sequence, System.String name, System.Object value) <0x169c870 + 0x0005c> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Datack.Blazor.Pages.Data.Index.BuildRenderTree (Microsoft.AspNetCore.Blazor.RenderTree.RenderTreeBuilder builder) <0x1977930 + 0x000dc> in <cd4fad1f0c094e678f0f1612015bbf56>:0 
  at (wrapper delegate-invoke) <Module>.invoke_void_RenderTreeBuilder(Microsoft.AspNetCore.Blazor.RenderTree.RenderTreeBuilder)
  at Microsoft.AspNetCore.Blazor.Rendering.ComponentState.RenderIntoBatch (Microsoft.AspNetCore.Blazor.Rendering.RenderBatchBuilder batchBuilder, Microsoft.AspNetCore.Blazor.RenderFragment renderFragment) <0x16964f8 + 0x0006c> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Microsoft.AspNetCore.Blazor.Rendering.Renderer.RenderInExistingBatch (Microsoft.AspNetCore.Blazor.Rendering.RenderQueueEntry renderQueueEntry) <0x16960a0 + 0x00040> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Microsoft.AspNetCore.Blazor.Rendering.Renderer.ProcessRenderQueue () <0x16931b8 + 0x00048> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Microsoft.AspNetCore.Blazor.Rendering.Renderer.AddToRenderQueue (System.Int32 componentId, Microsoft.AspNetCore.Blazor.RenderFragment renderFragment) <0x16923d0 + 0x00068> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Microsoft.AspNetCore.Blazor.Components.RenderHandle.Render (Microsoft.AspNetCore.Blazor.RenderFragment renderFragment) <0x16920b8 + 0x00036> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Microsoft.AspNetCore.Blazor.Routing.Router.Refresh () <0x17672a0 + 0x00130> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at Microsoft.AspNetCore.Blazor.Routing.Router.OnLocationChanged (System.Object sender, System.String newAbsoluteUri) <0x1974c90 + 0x0002c> in <6f55c2fa30114054ab77a67cb3b359ec>:0 
  at (wrapper delegate-invoke) System.EventHandler`1[System.String].invoke_void_object_TEventArgs(object,string)
  at (wrapper delegate-invoke) System.EventHandler`1[System.String].invoke_void_object_TEventArgs(object,string)
  at Microsoft.AspNetCore.Blazor.Browser.Services.BrowserUriHelper.NotifyLocationChanged (System.String newAbsoluteUri) <0x1974b00 + 0x00026> in <aa678c00565443a1a03daf9fa7da0de1>:0 

Further technical details

Build: 0.1
OS: Windows 10 Pro
Browser: Edge

Making the nullable int non-nullable wil fix this.
So this does work as expected:

<input @bind(TestInt) />

@functions
{
    public int TestInt { get; set; }

}

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-blazorIncludes: Blazor, Razor Components

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions