I'm trying to serialize the form and put it to server and for some reason the model binding fails to bind the model.
Here is my javascript button click,
$.when(ajaxFormPutAsync(window.userUrls.update, $('#formUserEdit').serialize(), true)).done((response) => {
});
ajaxFormPutAsync
method:
function ajaxFormPutAsync(requestUrl, putData, global) {
try {
return $.ajax({
type: "PUT",
url: requestUrl,
async: true,
global: global,
headers: {
"XSRF-TOKEN": $('input[name="__RequestVerificationToken"]').val()
},
data: putData,
error: function (jqXhr, textStatus, errorThrown) {
console.log(jqXhr);
}
});
} catch (q) {
ajaxIndicatorStop();
}
return false;
};
Here is my form,
<form id="formUserEdit" method="put">
<div class="form-row">
<div class="form-group col-md-6">
<label asp-for="FirstName"></label>
<input asp-for="FirstName" class="form-control form-control-sm">
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="LastName"></label>
<input asp-for="LastName" class="form-control form-control-sm">
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
</div>
<div class="form-row">
<div class="form-group col-md-6">
<label asp-for="Designation"></label>
<input asp-for="Designation" class="form-control form-control-sm">
<span asp-validation-for="Designation" class="text-danger"></span>
</div>
<div class="form-group col-md-6">
<label asp-for="IdentityNumber"></label>
<input asp-for="IdentityNumber" class="form-control form-control-sm">
<span asp-validation-for="IdentityNumber" class="text-danger"></span>
</div>
</div>
<input type="hidden" asp-for="Id" />
</form>
Here is my RazorPageHandler
,
public async Task<IActionResult> OnPutAsync(
[FromBody] UserViewModel userViewModel,
CancellationToken ct)
{
...
Here is my UserViewModel
,
public class UserViewModel
{
public Guid Id { get; set; }
[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Required]
public string Designation { get; set; }
[Required]
[Display(Name = "Identity Number")]
public string IdentityNumber { get; set; }
}
the request is hitting my page handler but userViewModel
is null
always.
Any suggestion on where I'm wrong?
Please assist.