Контроллер возвращает неверные данные с помощью ajax ActionLink в MVC

Несколько дней назад с помощью поиска я поместил кнопку ajax на своей странице, но до сих пор не знал, в чем проблема, дело в том, что полученный мной результат - не результат перенаправления ajax, а результат первой обработки (хотя мне было интересно, зачем он это крутит)...

И что я хочу сделать, это выполнить фильтрацию через кнопку ссылки вместо кнопки.

поэтому у меня есть два действия, одно для моей кнопки ajax, а второе для моего индекса:

1.

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ChooseCategoryAction(int? id)
    {
        Monitor.Enter(monitorObj);
        // Save code here...
        Session.Add("FilterCategory", id);
        return RedirectToAction("Index");
    }

2.

    public override ActionResult Index()
    {
        .
        .
        .
        int? id = (Session["FilterCategory"] != null) ? int.Parse(Session["FilterCategory"].ToString()) : (int?)null;
        List<LinkEntity> filterList = null;
        int catId = id ?? -1;
        if (catId != -1)
        {
            filterList = new List<LinkEntity>();
            foreach (LinkEntity linkEntity in linkList.Where(
                where =>
                    (catId == 0 && @where.Category == null) ||
                    (@where.Category != null && @where.Category.Id == catId)).Select(
                        select =>
                            new LinkEntity(@select.Id, @select.Name, @select.Link, @select.Description,
                                @select.Category)))
            {
                filterList.Add(linkEntity);
            }
        }
        else
        {
            filterList = linkList;
        }
        return View(filterList);
    }

Мой взгляд таков:

<div class="split-left">
    @if (ViewBag.CategoriesTags != null)
    {
        foreach (var cat in ViewBag.CategoriesTags)
        {
            <div class="link-item-category">
                @using (Html.BeginForm())
                {
                    @Ajax.ActionLink((string)cat.Name, "ChooseCategoryAction","Home", new { id = cat.Id }, new AjaxOptions { HttpMethod = "POST" }, new{@class = "category-link"})
                }
            </div>
        }
    }
</div>

Когда я нажимаю на ссылку, она должна перейти к методу Ajax, затем в папку "Входящие", отфильтровать мои данные и вернуть представление, но сначала она переходит в папку "Входящие", затем в папку "Ajax", снова в папку "Входящие", затем она переходит в значение true, но результат, который возврат неверный

Я также, прежде чем перейти к шагу фильтрации, попытался следующее:

                    @Html.Hidden(((int)cat.Id).ToString())
                    @Html.ActionLink((string)cat.Name, "ChooseCategoryAction", "Home", null, new { @class = "category-link", onclick = "return false;" })

с помощью следующего скрипта:

<script type="text/javascript">
    $(document).ready(function () {
        $('.category-link').click(function () {
            $(this).closest('form')[0].submit();
        });
    });
</script>

Но он не возвращается к контроллеру или не обновляет страницу

0 ответов

Другие вопросы по тегам