私はasp.net MVC5で働いています。私は検索機能が必要な材料の単純なリストを表示するページを持っています。フォームはコントローラに投稿されません
このため、私はAjaxフォームを使用しました。これは小さなチュートリアルから取りました。私は別のページでまったく同じメソッドを使用し、そこで動作させたので、私はそのコードをコピーしました。
しかし、今私はそれが私の人生のために働くことができません。
問題はquery
は常にnull
です。私が他の何かになるための唯一の方法は、私のURLに?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();
}
}
注:
このページではanotheですユーザーはさまざまな資料をチェックしてメンテナンスなどのために登録することができるので、私は干渉のテストのためにこの文書を簡単に投げ捨てました。
他のページ(人のリストを示しています)は、私がここで提供したコードとまったく同じように構築されています。このページはすばらしく動作します。
このページと他のページの両方でlazyloadingが使用され、pageNumが説明されています。これを心配する必要はありません。
任意のヘルプは大歓迎ですが、それは間違いをスパイ誰か、あるいは誰の代替を提供することができること。