控制器使用mvc中的ajax ActionLink返回不正确的数据

时间:2014-06-03 05:41:19

标签: ajax asp.net-mvc asp.net-mvc-4 actionlink asp.net-mvc-ajax

几天前搜索我在我的页面中放了一个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,再次进入收件箱,接下来它的值似乎是真的,但返回的结果不正确

我也是在进入过滤步骤之前,尝试过:

                    @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 个答案:

没有答案