我有以下问题
在我的ASP.NET MVC 5应用程序中,我想列出所有用户并拥有一个在您键入时更新的实时搜索栏。我做了它并且它工作,但它不返回局部视图,而是返回一个像这样的全新页面。
这是我的控制器(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>
我的部分视图(_UsersResult.cshtml)
@model List<Forum.Models.ApplicationUser>
@foreach (var user in Model)
{
<h3>@user.UserName</h3>
}
答案 0 :(得分: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);
}
希望能解决问题。