Member 11652153 Ответов: 1

Как отобразить меню динамических категорий и меню подкатегорий в ASP.NET MVC


I'm a beginner and I want to display menu on the middle like This Website(www.kammadanam.com) and when user clicks on any Category Name or its Sub Category Name I want to display Products related to the clicked category.



я пытаюсь таким образом, но это не правильно, пожалуйста, предоставьте действительный код

я поражен в своем проекте до 1 недели.
пожалуйста помогите мне друзья

Что я уже пробовал:

МОЙ СТОЛ:

<pre>Category:

CategoryId(pk), CategoryName, Description, 

SubCategory:

SubCategoryId(pk), SubCategoryName, Description, Icon,CategoryId(fk)

Product:

ProductId(pk), Name, Price, Description, CategoryId(fk), SubCategoryId(fk),


мой контроллер:

public ActionResult Home()
    {
        Products obj = new Products();

        //=====Menu Menthods=====
        obj.Showall_Menu_Cate = obj.selectalldata_Menu_Cate();

        return View(obj);
    }


public JsonResult GetSiteMenu(string id)
        {
            Sample Productobj = new Sample();
            DataTable dt = new DataTable();
            List<Sample> PrtList = null;
            SqlCommand Cmd = new SqlCommand("select * from SubCategory where CategoryID='" + id + "'", Con);
            SqlDataAdapter Da = new SqlDataAdapter(Cmd);
            DataSet Ds = new DataSet();
            Da.Fill(Ds);
            PrtList = new List<Sample>();
            for (int i = 0; i < Ds.Tables[0].Rows.Count; i++)
            {
                Sample CatObj = new Sample();
                //CatObj.Id = Ds.Tables[0].Rows[i]["Id"].ToString();
                CatObj.SubCategoryID = Ds.Tables[0].Rows[i]["CategoryID"].ToString();
                CatObj.SubCategoryName = Ds.Tables[0].Rows[i]["CategoryName"].ToString();
                //CatObj.Description = Ds.Tables[0].Rows[i]["Description"].ToString();
                //CatObj.Image = Ds.Tables[0].Rows[i]["Image"].ToString();
                //CatObj.CreatedOn = Ds.Tables[0].Rows[i]["CreatedOn"].ToString();
                //CatObj.Status = Ds.Tables[0].Rows[i]["Status"].ToString();
                PrtList.Add(CatObj);
            }
            //Productobj.Showall_Menu_Category = PrtList;
            return new JsonResult { Data = PrtList };
        }


моя модель:

public List<Sample> selectalldata_Menu_Cate()
        {
            List<Sample> PrtList = null;
            SqlCommand Cmd = new SqlCommand("select * from Category", Con);
            SqlDataAdapter Da = new SqlDataAdapter(Cmd);
            DataSet Ds = new DataSet();
            Da.Fill(Ds);
            PrtList = new List<Sample>();
            for (int i = 0; i < Ds.Tables[0].Rows.Count; i++)
            {
                Sample CatObj = new Sample();
                CatObj.Id = Ds.Tables[0].Rows[i]["Id"].ToString();
                CatObj.CategoryID = Ds.Tables[0].Rows[i]["CategoryID"].ToString();
                CatObj.CategoryName= Ds.Tables[0].Rows[i]["CategoryName"].ToString();
                CatObj.Description = Ds.Tables[0].Rows[i]["Description"].ToString();
                CatObj.Image = Ds.Tables[0].Rows[i]["Image"].ToString();
                CatObj.CreatedOn = Ds.Tables[0].Rows[i]["CreatedOn"].ToString();
                CatObj.Status = Ds.Tables[0].Rows[i]["Status"].ToString();
                PrtList.Add(CatObj);
            }
            return PrtList;
        }

Смотреть:

@foreach (var item in Model.Showall_Menu_Products)
                            {
                                <li class="dropdown">
                                    <a href="@Html.ActionLink(item.ProductName,"Shop", "Kammadanam",new { id="Pandu2" },new { @class= ".button_action"})"></a>
                                    <ul>
                                        @foreach (var item2 in Model.Showall_Menu_Category)
                                        {
                                            <li>
                                                @*@Html.ActionLink("Solar Water heaters", "Shop", "Kammadanam")*@
                                                <a href="@Html.ActionLink(item2.CategoryName,"Shop", "Kammadanam",new { id ="Pandu" },new { @class= ".button_a"})"></a>
                                            </li>
                                        }
                                        @*<li><a href="shop.html">Solar LED Lights</a></li>
                                        <li><a href="shop.html">solar water pumps</a></li>
                                        <li><a href="shop.html">solar potable led & lamp LED</a></li>*@
                                    </ul>
                                </li>
                            }


Способ Аякса :

<script>
                        $('.button_action').click(function (index) {
                            $.ajax({
                                url: "/Kammadanam/getProduct/",
                                contentType: 'application/html; charset=utf-8',
                                type: 'GET',
                                data: {
                                    id: $("#Pandu2").val()
                                },
                                success: function (result) {
                                    debugger
                                    $("#Pandu").attr('href', result)
                                }
                            });
                            return false;
                        });
                    </script>

Suvendu Shekhar Giri

"я пытаюсь это сделать, но это неправильно"
В чем проблема с тем, что вы пробовали?

Member 11652153

Категория и подкатегория динамически привязываются к базе данных, как меню и подменю. в категории привязки меню и в подкатегории привязки подменю, как этот сайт..смотрите один раз этот сайт www.kammadanam.com

1 Ответов

Рейтинг:
1

Saineshwar Bageri

1. Создайте демо-контроллер с 2 методами действия

1. Дома ActionMethod
2. HomeLayout (это Childonly ActionMethod вернет частичное представление )
[

return PartialView("_MenuList", Model);
]

2. Создайте частичное представление с именем _MenuList в общей папке

<div>
    <ul class="nav nav-pills nav-stacked">
        @foreach (var menu in Model.ProductList)
        {                 
                // If you want to bind sub menu than create a static Method that will take product ID as input and will get sub product and iterate here     
            <li>@menu.MenuName
            </li>   
        }
    </ul>
</div>


3. Теперь на макете или представлении вы хотите отобразить это меню просто вызовите

@{Html.RenderAction("HomeLayout", "DemoDashboard");}


Ваше меню будет отображаться здесь


Member 11652153

я пробую твой путь,но получаю ошибку.
при этом непосредственно загружается renderAction ethod

Member 11652153

пожалуйста, смотрите эту ссылку. www.kammadanam.com
в этом одна строка меню есть.
ты понимаешь, что мне нужно

Saineshwar Bageri

Используйте ту же идею, но вам нужно применить класс к этому меню соответственно, тогда он будет генерироваться таким образом.