2016-08-15 12 views
0

では動作しません。私はすべてのユーザーを一覧表示し、そのライブ検索バーを持つようにしたい私のASP.NET MVC 5アプリで次のような問題ASP.NET MVC 5 - パーシャルビューは私のAJAXのライブ検索

を持っています入力時に更新されます。私はそれを作った、それは動作しますが、部分的なビューを返さず、そのように全く新しいページを返します。

これは、すべてのユーザーをリストするページです。 enter image description here そして、これは私が enter image description here

を検索するときにこれは私のコントローラ(AdminController.cs)で取得されるものです

public class AdminController : Controller 
{ 
    protected readonly ApplicationDbContext db = new ApplicationDbContext(); 

    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Users() 
    { 
     var users = db.Users.ToList(); 

     return View(users); 
    } 

    public ActionResult Search(string query) 
    { 
     var result = db.Users.Where(u => u.UserName.ToLower().Contains(query.ToLower())).ToList(); 

     return PartialView("_UsersResult", result); 
    } 
}} 

マイ見ます(Users.cshtml)

@model List<Forum.Models.ApplicationUser> 



@using (Ajax.BeginForm("Search", null, 
    new AjaxOptions 
    { 
     HttpMethod = "GET", 
     UpdateTargetId = "results", 
     InsertionMode = InsertionMode.Replace 
    }, new {id = "searchForm"})) 
{ 
    <input name="query" placeholder="Search" oninput="$('#searchForm').submit()"/> 
    <input type="submit" value="Search"/> 
} 


<div id="results"> 
@Html.Partial("_UsersResult", Model) 
</div> 

そして私のパーシャルビュー(_Users Result.cshtml)

+0

リダイレクトしている場合は、関連するスクリプト( 'jquery.unobtrusive-ajax.js')を含めていないので、 –

答えて

1

サーバーへのリクエストによって部分ビューをレンダリングする場合は、ActionResultを使用するのは正しい方法ではありません。コントローラからPartialViewResultを返す必要があります。

public PartialViewResult Search(string query) 
    { 
     var result = db.Users.Where(u => u.UserName.ToLower().Contains(query.ToLower())).ToList(); 

     return PartialView("_UsersResult", result); 
    } 

希望が問題を解決します。

+0

悲しいことに、この問題は解決しませんでした。 – Thenis

+0

BeginFormの2番目のパラメータにコントローラ名としてnullを渡したのはなぜですか? –

+0

また、nugetパッケージから 'jQuery unobtrusive ajax'を追加して、_Layout.cshtmlファイルに追加しましたか?最初のjqueryとjquery.unobtrusive-ajaxスクリプト? –

関連する問題