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