【问题标题】:ASP.NET MVC 5 - Partial view doesn't work with my AJAX live searchASP.NET MVC 5 - 部分视图不适用于我的 AJAX 实时搜索
【发布时间】:2016-08-15 12:53:04
【问题描述】:

我有以下问题

在我的 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>
}

【问题讨论】:

  • 如果你的重定向,那是因为你没有包含相关的脚本(jquery.unobtrusive-ajax.js

标签: c# ajax asp.net-mvc-5


【解决方案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);
    }

希望能解决问题。

【讨论】:

  • 为什么你在 BeginForm 的第二个参数中传递了 null 作为控制器名称?
  • 您是否还从 nuget 包中添加了“jQuery unobtrusive ajax”并将它们添加到您的 _Layout.cshtml 文件中?首先是 jquery,然后是 jquery.unobtrusive-ajax 脚本?
  • 已修复。我错过了 jquery.unobtrusive-a‌​jax.js。感谢您的帮助
猜你喜欢
  • 2016-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-15
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多