If a form like the one below is submitted and MyField
is left blank on the form, then by default Asp.Net Core model binding will place null into the corresponding property on the model as indicated below.
Example Form
<form asp-controller="SomeController" asp-action="SomeAction">
<label asp-for="MyField">My Field</label><input asp-for="MyField" type="text" />
<button type="submit">Submit</button>
</form>
Example Model
public class MyModel{
public string MyField { get; set; }
}
Example Action Method
[HttpPost]
public IActionResult Post(MyModel m) {
//m.MyField will be null if the field was left empty
//but I want it set to a blank string by the model binder
}
However, since MyField
is actually transmitted in the Http Post body I'd prefer that the model binder set the MyField
property on the model to a blank string rather than setting it to null. I'd prefer to reserve null for cases where MyField
is not transmitted in the Http Post body. How can the model binder be changed to exhibit this behavior?