【发布时间】:2016-06-01 14:22:58
【问题描述】:
我正在使用 asp.net MVC5。我有一个页面显示了一个失败的简单材料列表,需要搜索功能。
为此,我使用了一个 Ajax 表单,取自一些小教程。我在另一个页面上使用了完全相同的方法并让它在那里工作,所以我复制了上述代码。
但现在我无法让它为我的生活工作。
问题是query 总是null。我得到它的唯一方法是在我的网址中添加?query=ben。这样我终于可以测试搜索栏的其他功能,效果很好。
.cshtml:
<div class="pure-form">
@using (Ajax.BeginForm("Materiaal_Main", "Materiaal",
new AjaxOptions
{
HttpMethod = "GET",
UpdateTargetId = "beheertable",
}))
{
<input type="text" id="txtsearch" name="query" placeholder="Algemeen dynamisch zoeken..." AutoComplete="off" style="margin-bottom: 10px; position:relative; top: 3px;" value="@ViewBag.query" />
<input type="submit" value="Search" class="ui button" />
}
</div>
我的控制器:
public ActionResult Materiaal_Main(int? pageNum, string query)
{
ViewBag.Title = "Materiaal_Main";
ViewBag.Totaal = (from m in db.tbl_materiaal select m).Count();
pageNum = pageNum ?? 0;
query = query ?? "";
ViewBag.IsEndOfRecords = false;
if(pageNum == 0)
{
LoadAllMateriaalToSession();
}
if (Request.IsAjaxRequest())
{
var materiaal = GetMateriaalForPage(pageNum.Value, query);
ViewBag.IsEndOfRecords = (materiaal.Any()) && ((pageNum.Value * LazyLoadingRows) >= materiaal.Last().Key);
ViewBag.query = query;
return PartialView("_MateriaalRow", materiaal);
}
else
{
ViewBag.Materiaal = GetMateriaalForPage(pageNum.Value, query);
ViewBag.query = query;
return View();
}
}
注意事项:
这个页面是另外一个表单,因为用户可以查看不同的材料来注册维护等等。我已经简单地把这个扔出页面来测试干扰,它没有任何区别。
另一个页面(显示人员列表)的构建与我在此处提供的代码完全相同。此页面运行良好。
这个页面和另一个页面都使用延迟加载,这解释了 pageNum。不用担心这个。
欢迎任何帮助,无论是发现错误的人,还是可以提供替代方案的人。
【问题讨论】: