2016-06-01 26 views
0

私は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が説明されています。これを心配する必要はありません。

任意のヘルプは大歓迎ですが、それは間違いをスパイ誰か、あるいは誰の代替を提供することができること。

答えて

0

私は検索の時間がかかりましたが、突然何がうまくいかなかったのかを突き止めたとき、私は大変なことに直面しました。

同じ名前の別のメソッド[HttpPost]があり、他の関数に値を渡していないため、メソッドが機能しませんでした。短編小説:

public ActionResult Materiaal_Main(int? pageNum, string query) 
    { ... } 

[HttpPost] 
public ActionResult Materiaal_Main(FormCollection form) 
    {... 
    return RedirectToAction("Materiaal_Main", new { query = form["query"].ToString() }); 
    } 

固定されています。

関連する問題