簡體   English   中英

級聯下拉 razor 頁面

[英]cascading dropdown razor pages

這是我的級聯下拉代碼

  <div class="form-group col-md-4">
            <label asp-for="CarChassis.CompanyNameId" class="control-label"></label>
            <select asp-for="CarChassis.CompanyNameId" class="form-control" asp-items="ViewBag.CompanyNameId"></select>
            <span asp-validation-for="CarChassis.CompanyNameId" class="text-danger"></span>
        </div>
        <div class="form-group col-md-4">
            <label asp-for="CarChassis.CarModelId" class="control-label"></label>
            <select asp-for="CarChassis.CarModelId" class="form-control" asp-items="ViewBag.CarModelId"></select>
            <span asp-validation-for="CarChassis.CarModelId" class="text-danger"></span>
        </div>

和后面的代碼

 [BindProperty]
    public CarChassis CarChassis { get; set; }
    public int CarCompanyId { get; set; }
    public SelectList CarModelsList { get; set; }

    public  async Task<IActionResult> OnGetAsync()
    {
        ViewData["CarModelId"] = new SelectList(_context.CarModels, "Id", "Name");
        ViewData["CompanyNameId"] = new SelectList(_context.CompanyNames, "Id", "Name");
        ViewData["CreateYearId"] = new SelectList(_context.CreateYears, "Id", "Name");
        ViewData["DiversityId"] = new SelectList(_context.Diversity, "Id", "Name");
        return Page();
    }
    public JsonResult OnGetCarMode(int CarCompanyI)
    {
       var CarModelsList = _context.CarModels.Where(x => x.CompanyNameId == CarCompanyI).ToListAsync();
        return new JsonResult(CarModelsList);

    }

這也是我的模特

    public class CompanyName
{
  
    public string Name { get; set; }
    public DateTime CreateDate { get; set; }
    public DateTime ModifyDate { get; set; }
    public  ICollection<CarModel> CarModels { get; set; }
}
 public int Id { get; set; }
    public string Name { get; set; }
    public DateTime CreateDate { get; set; }
    public DateTime ModifyDate { get; set; }
    public int CompanyNameId { get; set; }
    public CompanyName CompanyName { get; set; }
}

這是我的 ajax 代碼

    <script>
    $(function () {
        $("#CarChassis_CompanyNameId").on("change", function () {
            var CarCompanyI = $(this).val();
            $("#CarChassis_CarModelId").empty();
            $("#CarChassis_CarModelId").append("<option value=''>select </option>");
            $.getJSON(`?handler=CarMode&CarCompanyI=${CarCompanyI}`, (data) => {

                $.each(data, function (i, item) {
                    $("#SubCategoryId").append("<option value='"+ item.id+ "'>" + item.name + "</option>");
                });
            
            });
        });
    });
</script>

運行我的代碼后,我收到此錯誤

未捕獲的類型錯誤:無法讀取 null 的屬性“id”

您的代碼中有兩個問題。

第一個在您的代碼中(這不是異步方法,不能使用ToListAsync ):

var CarModelsList = _context.CarModels.Where(x => x.CompanyNameId == CarCompanyI).ToListAsync();

將其更改為:

 var CarModelsList = _context.CarModels.Where(x => x.CompanyNameId == CarCompanyI).ToList();

第二個在您的 ajax 中( SubCategoryId不存在)。

 $.each(data, function (i, item) {
                $("#SubCategoryId").append("<option value='"+ item.id+ "'>" + item.name + "</option>");
            });

將其更改為:

 $.each(data, function (i, item) {
                $("#CarChassis_CarModelId").append("<option value='"+ item.id+ "'>" + item.name + "</option>");
            });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM