не могу понять, как связать 2 выпадающего списка

Единственная причина, по которой вы захотите это сделать, - это если в предыдущем коде есть еще один await или если вы каким-то образом обработаете результат перед его возвратом. Другой способ, которым это может происходить, - это try/catch, который изменяет порядок обработки исключений. Если вы ничего не делаете, тогда вы правы, нет причин добавлять накладные расходы на создание метода async.

0
задан Muhammad Moid Shams 22 February 2019 в 12:07
поделиться

1 ответ

Вот код с вашим требованием.

Вам нужно создать действие для фильтрации подкатегории, реализовать событие изменения выпадающего списка в jquery, в вызове события изменения AJAX получить данные.

Контроллер:

 public class ProductController : Controller
    {
        private static List<tbl_shopCategory> categories = new List<tbl_shopCategory>
        {
            new tbl_shopCategory
            {
                cat_id = 1, cat_name = "Beverage"
            },
            new tbl_shopCategory
            {
                cat_id = 2, cat_name = "Fruits"
            }
        };

        private static List<tbl_subCategory> subcategories = new List<tbl_subCategory>
        {
            new tbl_subCategory
            {
                scat_id = 1, scat_fk_cat_id = 1, scat_name = "Sub Beverage 1"
            },
            new tbl_subCategory
            {
                scat_id = 2, scat_fk_cat_id = 1, scat_name = "Sub Beverage 2"
            },

            new tbl_subCategory
            {
            scat_id = 3, scat_fk_cat_id = 2, scat_name = "Sub Fruits 1"
        },
        new tbl_subCategory
        {
            scat_id = 4, scat_fk_cat_id = 2, scat_name = "Sub Fruits 2"
        }
        };
        public ActionResult CreateProduct()
        {
            //if (Session["ad_id"] != null)
            //{
            List<tbl_shopCategory> lst = categories;
            List<tbl_subCategory> li = subcategories;
            ViewBag.cat = new SelectList(lst, "cat_id", "cat_name");
            ViewBag.scat = new SelectList(li, "scat_id", "scat_name");


            return View();
            //}
            //else
            //{
            //    return RedirectToAction("AdminSignIn");
            //}

        }

        public JsonResult GetSubCategory(int categoryId)
        {
           return Json(subcategories.Where(c => c.scat_fk_cat_id == categoryId).ToList(), JsonRequestBehavior.AllowGet) ;
        }
    }

    public class tbl_subCategory
    {
        public int scat_id { get; set; }

        [Required(ErrorMessage = "Input field required*")]
        public string scat_name { get; set; }
        public string scat_img { get; set; }
        [Required(ErrorMessage = "Input field required*")]
        public int scat_fk_cat_id { get; set; }
    }

    public class tbl_shopCategory
    {
        public int cat_id { get; set; }
        public string cat_name { get; set; }
        public string cat_img { get; set; }
    }

CreateProduct.cshtml

@using System.Collections

@{
    ViewBag.Title = "CreateProduct";
}

<h2>CreateProduct</h2>

@Html.DropDownList("Category", (IEnumerable<SelectListItem>)ViewBag.cat, string.Empty, new {})

@Html.DropDownList("SubCategory", (IEnumerable<SelectListItem>)ViewBag.scat, string.Empty, new { })

<script src="~/scripts/jquery-1.10.2.js"></script>
<script>

    $('#Category').change(function () {
        var categoryId = $('#Category').val();
        $.ajax({
            url: '/Product/GetSubCategory',
            type: 'GET',
            datatype: 'JSON',
            data: { categoryId: categoryId },
            success: function (result) {
                $('#SubCategory').html('');
                $('#SubCategory').append($('<option>Select</option>'));
                $.each(result, function (i, item) {
                    $('#SubCategory').append($('<option></option>').val(item.scat_id).html(item.scat_name));;
                });
            }
        });
    });
</script>
0
ответ дан Hien Nguyen 22 February 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: