几天前搜索我在我的页面中放了一个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>
但它不会返回控制器或不刷新页面