Вызов метода контроллера, который возвращает представление с Ajax Call From Asp. net MVC Страница просмотра - PullRequest
0 голосов
/ 02 августа 2020

Я использую. Net приложение ядра 2.1, внутри для l oop как я могу вызвать страницу просмотра контроллера, не возвращаясь к ajax ответу, см. Следующий код

это мой вид бритвы

  @foreach (var item in Model.CategoryList)
                    {
                        <div class="col-sm-6 col-md-4 mb-4 mb-lg-0 col-lg-2"  onclick="SelectCategory(@item.CategoryId)">
                            <a href="#" class="popular-category h-100">
                                <span class="icon"><span class="@item.Icon"></span></span>
                                <span class="caption mb-2 d-block">@item.CategoryName</span>
                                <span class="number">32,891</span>
                            </a>
                        </div>
                    }





<script>

        function SelectCategory(id) {

            $.ajax({
                type: 'POST',
                url: '@Url.Action("ProductsList","Home")',
                dataType: 'json',
                data: { parentId: id }
            });
            
        }
    </script>




 public ActionResult ProductsList(int parentId)
        {
            List<PilCategory> all = new List<PilCategory>();
           
            if(parentId > 0)
                all = _context.PilCategory.Where(x=>x.ParentId == parentId).OrderBy(a => a.ParentId).ToList();
            else
                all = _context.PilCategory.OrderBy(a => a.ParentId).ToList();

            return View(all);
        }

пожалуйста, помогите мне, спасибо за заранее

1 Ответ

0 голосов
/ 03 августа 2020

как я могу вызвать страницу просмотра контроллера, не возвращаясь к ajax ответу

Насколько я знаю, мы не могли запустить страницу просмотра контроллера без возврата к ajax ответу . Поскольку ajax отправит запрос в представление контроллера, а представление контроллера вернет представление как html ответ обратно на ajax.

Если мы не обработаем ответ, это означает текущая страница не изменится.

Если вы просто хотите передать parentId методу ProductsList, я предлагаю вам попробовать использовать window.location, это приведет к перенаправлению этой страницы на представление ProductsList, которое достигнет refre sh вся страница.

Примечание: если мы используем ajax для вызова ProductsList, вся страница не будет обновляться sh. Если мы используем window.location, он перенаправит на другую страницу или обновит sh всю страницу.

Подробнее о том, как этого добиться, вы можете найти в кодах ниже:

@section Scripts{
    <script>
        function SelectCategory(id) {
            location.href = "/Home/ProductsList?parentId=" + id;
        }
    </script>
}

Если вы хотите использовать ajax для достижения этого, я предлагаю вам попытаться обработать ответ, используя метод ajax успеха. Обычно мы возвращаем частичное представление в методе контроллера, а затем мы можем добавить его на страницу html, используя jquery без обновления страницы.

Подробнее о том, как этого добиться, вы можете найти на это ответьте .

...