ASP.NET Core's BindNever does not work with record

96 views Asked by At

When using Razor Pages 7 I have this in the code-behind file:

public record PersonDto(
  long Id,
  string Name,
  [BindNever] string Address,
  // ...
);

[BindProperty] public PersonDto Person { get; set; }

I populate that in the OnGet() and show it on the page. I read it in the OnPost() to update the database.

But Address is supposed to be read-only. I do not allow it to be changed, so the post handler always fails with a validation error of "The Address field is required".

The BindNever attribute does not work on the record (even though the docs show that it should).

I also tried the long-form record syntax, and the [property:BindNever] syntax, with the same result.

Anyone know why?

1

There are 1 answers

4
lonix On BEST ANSWER

I found a workaround. I replaced this:

[BindNever] string Address,

with this:

[property:BindNever] string? Address,