[Solved] ASP.Net Core MCV Error: Serialization and deserialization of System.Type instances are not supported

trisetia302
 
on Dec 24, 2022 01:36 AM
1892 Views

Hi,

I have been looking for a solution to solve this problem but until now I have not found a solution.

What I want is when the user selects a certain ID then the information will be displayed from the database to the view using AJAX I am using entity framework in this case.

please help.

Here is the error that appears

An unhandled exception has occurred while executing the request.
System.NotSupportedException: Serialization and deserialization of 'System.Type' instances are not supported and should be avoided since they can lead to security issues. Path: $.MoveNextAction.Method.ReturnParameter.ParameterType.

ReservasiKamarController.cs

// GET: Reservasi
[HttpGet]
public IActionResult Get_DataTamuByID(int? idTamu)
{
    var tblTamu = _context.TblTamus.FirstOrDefaultAsync(x=>x.IdTamu==idTamu);
    return Json(tblTamu);
}

TblTamu.cs

public partial class TblTamu
{
    [Key]
    [Display(Name = "ID Tamu")]
    [Required]
    public int IdTamu { get; set; }
 
    [Display(Name = "Nama Tamu")]
    [Required]
    public string NamaTamu { get; set; }
 
    [Display(Name = "Alamat")]
    [Required]
    public string Alamat { get; set; }
}

Startup.cs

services.AddControllersWithViews().AddJsonOptions(jsonOptions =>
{         
    jsonOptions.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.Preserve;
});

view.cshtml

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script src="~/plugins/jquery/jquery.min.js" type="text/javascript" lang="javascript"></script>
    <script type="text/javascript" lang="javascript">
    $(document).ready(function () {
        $('#btnLoadDataTamu').on("click", function () {
             $.ajax({
                url: "@Url.Action("Get_DataTamuByID", "ReservasiKamar")",
                type: "GET",
                contentType: "application/json;charset=UTF-8",
                dataType: "json",
                data: { idTamu: $('#IdTamu').val() },
                success: function (data) {
                     if (data !="") {
                         $('#NamaTamu').val(data.NamaTamu);
                         $('#Alamat').val(data.Alamat);
                         $('#NoHp').val(data.NoTelpon);
                     }
                     else {
                         window.alert(' error : ' + data.message);
                     }
                 }
             });
        });
        return false;
    });
</script>
<div class="card-body">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="row">
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="IdTamu" class="control-label"></label>
                <div class="input-group-append">
                    <input asp-for="IdTamu" id="IdTamu" class="form-control">
                    <button type="button" id="btnLoadDataTamu" class="btn btn-warning">Cari</button>
                </div>
                <span asp-validation-for="IdTamu" class="text-danger"></span>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="NamaTamu" class="control-label"></label>
                <input asp-for="NamaTamu" id="NamaTamu" class="form-control" readonly="readonly" />
                <span asp-validation-for="NamaTamu" class="text-danger"></span>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="NoHp" class="control-label"></label>
                <input asp-for="NoHp" id="NoHp" class="form-control" readonly="readonly" />
                <span asp-validation-for="NoHp" class="text-danger"></span>
            </div>
        </div>
        <div class="col-md-6">
            <div class="form-group">
                <label asp-for="Alamat" class="control-label"></label>
                <textarea asp-for="Alamat" id="Alamat" class="form-control" rows="4" readonly="readonly"></textarea>
                <span asp-validation-for="Alamat" class="text-danger"></span>
            </div>
        </div>
    </div>
    <!-- /.card-body -->
</div>

 

Download FREE API for Word, Excel and PDF in ASP.Net: Download