带控制器的 MVC 部分视图,ajax - 如何让部分控制器获取数据?

2023-12-09

我正在学习 MVC,对此感到困惑。我正在尝试将一些获取数据并将其显示在 WebGrid 中的常用代码分解为可以在多个页面上使用的部分视图。

我的家庭控制器 Index 方法只执行 return View()。主页视图如下所示:

@using (Ajax.BeginForm("SearchAction", "Search",
    new AjaxOptions { UpdateTargetId = "data-grid", HttpMethod = "Post" }))
{
    @Html.TextBoxFor(model => model.name)
    <input type="submit" value="Search" />
}

@{
<div id="data-grid">
    @Html.Partial("SearchResults", Model)
</div>
}

我尝试使用 Ajax 来避免在单击 WebGrid 寻呼机链接(呈现为普通链接)时丢失搜索表单数据。

我的 SearchController 看起来像这样:

public ActionResult SearchAction(string name)
{
    return RedirectToAction("SearchResults", new { name = name });
}

public ActionResult SearchResults(string name)
{
    //does database query and sticks results in the viewbag
    //filter on optional name parameter

    VieweBag.Members = MyQueryResults;
    return PartialView();
}

我的SearchResults共享视图,数据是通过ViewBag.Members传入的:

@{
    var grid = new WebGrid(null, rowsPerPage: ViewBag.Pagesize);
    grid.Bind(ViewBag.Members);
    @grid.GetHtml(// etc. etc.)
}

我得到的结果是 ViewBag.Pagesize 和 ViewBag.Members 绑定失败,因为 viewbag 中没有数据。显然,首次加载主页时,我的部分控制器不会被调用来执行初始查询并将内容放入 ViewBag 中。我怎样才能做到这一点?

另一个奇怪的事情是,如果我只是将数据库查询代码复制到我的家庭控制器(原来的位置)中以强制原始查询,那么如果我将一些文本放入搜索字段并进行搜索,则部分视图将呈现为本身就在新的一页上。为什么会发生这种情况,我以为它只会呈现为我主页的一部分。

我从不同的答案/地方将这个部分观点拼凑在一起,毫无疑问得到了一些可怕的错误:\


部分页面不会通过控制器,而是直接渲染视图。如果要将视图数据传递给分部视图,可以使用一个重载函数来获取视图数据字典。抱歉,我无法提供更详细的信息,但我正在使用手机(等待我儿子在另一个房间入睡):)

Update:

如果你想触发一个GET您的部分视图的操作,您可以使用Html.Action。以下是一些有用的链接:

  • MSDN 渲染操作
  • RenderPartial 和 RenderAction 之间的区别

此外,将表单标签移动到部分视图中可能是有意义的,但这些是清理代码时的详细信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带控制器的 MVC 部分视图,ajax - 如何让部分控制器获取数据? 的相关文章

  • 将 viewbag 从操作控制器传递到部分视图

    我有一个带有部分视图的 mvc 视图 控制器中有一个 ActionResult 方法 它将返回 PartialView 因此 我需要将 ViewBag 数据从 ActionResult 方法传递到 Partial View 这是我的控制器
  • 你调用的对象是空的。 IE问题

    我在 ASP Net 中开发了一个网站 它在除 IE 之外的所有浏览器中都能正常工作 在 IE 中我收到错误 对象引用未设置为对象的实例 在我的本地计算机中一切正常 发布到服务器后出现错误 有什么想法如何解决这个问题吗 这是我得到的堆栈跟踪
  • MVC4 枚举和单选按钮列表

    我已经看到了一些关于此的线程 但似乎没有一个适用于 MVC4 因为 RadioButtonFor html 扩展方法 帮助程序不存在 假设我有一个枚举列表 即航空公司 public enum Airlines Unknown 0 Briti
  • 使用 asp.net mvc 4 的简单注入器,从另一个程序集加载控制器

    我正在开发一个 asp net mvc 4 站点 使用 Simple Injector 作为 Ioc 工具 这将是一个可插拔的架构 某些控制器和视图位于另一个程序集中 另一个 mvc4 应用程序 Plugin Web dll 从主应用程序中
  • Ajax.ActionLink 和确认对话框

    我有一些问题 Ajax ActionLink 我想显示确认对话框 是的 我知道我可以这样做 Ajax ActionLink Do it Delete new AjaxOptions Confirm Are you sure 但我想要有自己的
  • 在发布的网站中自动创建的 App_Code 文件夹

    我也在 VS 2010 中使用 Umbraco 6 创建了一个 MVC4 应用程序 并且创建了一个 Web 部署项目 我的 Team City CI 服务器使用该项目将我的网站部署到 CI 环境进行测试 在 CI 服务器上 我第一次加载主页
  • 剃刀 2 到剃刀 3 MVC 5

    我一直在开发 MVC 4 解决方案 并且一直在尝试将其升级到 MVC 5 我已按照概述的步骤操作here http www asp net mvc tutorials mvc 5 how to upgrade an aspnet mvc 4
  • 找不到实体框架数据提供程序,entityclient

    首先 我发现许多问题和许多答案与我的问题相关或被认为与我的问题相同 但似乎没有什么对我有用 我有一个全新的模板化 MVC4 网站 全新安装的 sql server 2008 r2 中有一个全新的数据库 我在数据库上运行 aspnet reg
  • MVC 4 SimpleMembership HasLocalAccount 方法未找到

    当尝试访问时 account manage在生产服务器上我收到此错误 System MissingMethodException Method not found Boolean WebMatrix WebData ExtendedMemb
  • _Layout.cshtml无法直接请求,因为它调用了“RenderBody”方法

    我使用属性来路由 这是否相关 我不知道 当我不使用 Route 属性时 共享控制器中的 Layaout 操作不起作用 但页面正在呈现 public class SharedController Controller GET Shared A
  • 如何使用 Entity Framework Code First 在两个实体之间建立多个一对多关系

    下面是保存关系数据库记录的简单方法 该方法运行得很好 我对一种情况有疑问 在此之前 我需要知道如果数据库复杂性增加 我所采用的方法会遇到什么困难 还有更好 高效但简单的方法吗 一对一 tb student store student det
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • IsReusable 属性中的上下文切换

    是否可重用属性 下面是我的理解IsReusable财产 如果处理程序返回静态内容 将值设置为 true 是安全的 但如果线程返回动态内容 为了使其线程安全 IsReusable应设置为 false 在这种情况下 可能会发生上下文切换 这可能
  • Elmah 不会在 MVC 应用程序中记录 http post 请求的异常 - 如果请求包含 XML

    我在 MVC4 RC 应用程序中遇到了一个奇怪的问题 在 NET 4 0上运行 我刚刚设置 Elmah 来记录异常 错误 我基本上安装了埃尔玛MVC and elmah sqlserverNuGet 包 分别为2 0 0和1 2版本 它似乎
  • 如何在 MVC 应用程序中转置 Kendo UI 网格中的行和列?

    我在 MVC 应用程序中使用 Kendo Ui Grid 我希望在我的网格中显示多个国家 地区的统计数据 我从数据库检索数据的方式 我的网格将显示类似于以下内容的数据 Country Area Population GDP GDP Grow
  • mvc4 捆绑包,它是如何工作的?

    在 mvc4 中 他们使用捆绑包来调用所有脚本和 css 文件一次 据我所知 调用js和cs文件时 它们的顺序很重要 如果我使用捆绑包 我如何知道捆绑包内的 css 和 js 文件的顺序是否正确 我可以定制订购吗 我现在的日期选择器有问题
  • 如何在 Azure 上的 MVC 应用程序中托管和嵌入视频?

    我创建了一个基本应用程序并上传到 Azure 我想嵌入视频 以便用户可以从列表中进行选择并查看每个视频 例如 选择一部电影并观看其预告片 我在 MVC 解决方案中创建了两个文件夹 Posters 包含用作每个视频背景的 jpg 文件 Vid
  • MVC 4 Razor 如果拆分 div 标签

    我有以下 MVC 4 Razor 代码 for int i 1 i lt 100 i if currentCol 1 Html Raw div class row Need to do this because can t have a o
  • 在 MVC 应用程序中使用虚拟目录时出现 global.asax 文件错误

    我有一个部署到 IIS 服务器的工作 MVC 4 应用程序 我想在 IIS 中的另一个网站内复制此 MVC 应用程序 因此我使用虚拟目录将工作 MVC 站点的 Bin 视图 脚本和图像链接到新站点 然后 我将 global asax 和 w
  • 将复杂类型数组添加到 RouteValueDictionary

    我想知道是否有一种优雅的方法将复杂类型数组添加到 RouteValueDictionary 或兼容类型 例如 如果我有一个类和一个操作 public class TestObject public string Name get set p

随机推荐