【问题标题】:using ajax or not when displaying new records in asp.net mvc在 asp.net mvc 中显示新记录时是否使用 ajax
【发布时间】:2016-03-03 03:37:13
【问题描述】:

我是 MVC 的初学者。在我的应用程序中,我在左侧(在 div 内)列出了类别(作为按钮)。就在这个 div 的右侧,还有另一个 div 显示与单击的类别相关联的项目。

当单击类别按钮时,我计划调用控制器的操作,该操作将从数据库中检索项目并将这些项目添加到 ViewModel(例如,model.Items = db.Items...),然后使用更新模型并显示项目。

但是,如果在此处进行 Ajax 调用并使用局部视图来显示单击类别的项目是否更好,我会感到好奇。

如果在我的场景中感觉这两种方法之间的唯一区别是页面刷新,它们在速度方面应该是相同的,因为它们都需要相同的数据库调用。

任何人都可以分享 MVC 中针对此类场景的良好实践吗?

【问题讨论】:

  • 使用 ajax 会(略微)更快,因为它不需要刷新页面 - 您只需更新现有的 DOM
  • @StephenMuecke 在 MVC 应用程序中通常采用哪种方法?
  • 你的问题太宽泛了,但在你的情况下,使用 ajax 似乎是最好的方法 - 你只需将类别的 ID 传递给根据 ID 过滤数据的控制器方法并返回一个局部视图,然后将其附加到 DOM,因为这意味着您不必重新生成页面中的所有其他元素(例如类别列表)
  • 使用 jquery 将是这种情况的最佳方法。因为您不必加载必须重新渲染脚本和内容的布局页面。尽可能坚持 MVC 中的 Ajax 调用,技术正在改进,许多单页应用程序已经出现,如果我们仍然为每个新请求使用页面加载,那么就没有意义了。
  • 这是一个很好的观点,partial Views 和 Json 的权重取决于场景。假设您有一个带有大量 if 检查和循环的局部视图,并根据 if 等构建 HTML,在这种情况下使用局部视图实际上更好,因为如果我们尝试使用 json 在 Jquery 中构建相同的东西,它可能但是不会那么容易,我们可能会在开发过程中出错。但如果需求是像更新网格、动态下拉或处理页面中的一些 Jquery 插件,我认为 Json 数据会更好,因为许多插件本身使用 json 数据。

标签: ajax asp.net-mvc


【解决方案1】:

是的,AJAX 是一种无需刷新即可在同一页面中更新详细信息的更快且更好的方法。 为此,您必须在控制器中创建 JsonResult 方法。它将为您提供 Json 的结果。 重复代码尝试 JQuery 模板插件。

<script id="trTemplate" type="text/x-jquery-tmpl">
            <tr>
                {{each $data}}
                    <td>${Col}</td>
                {{/each}}
            </tr>
</script>    
<table id="containerTable">
</table>

AJAX 调用

$.ajax({
        url: 'Your JsonResult Method URL',
        type: "GET",
        data: data,
        beforeSend: function () {
        },
        success: function (data) {
                // It will pass data to template and template will bind parsing json
              $('#trTemplate').tmpl(data).appendTo('#containerTable');
            //Business logic
        },
        complete: function () {
             // Your Code
        }
    });

你的 JsonResult 方法

[HttpPost]
    public JsonResult GetData(ViewModel model)
    {
    // Your Code here       
    }

【讨论】:

  • 我也可以使用局部视图而不是 jquery 模板,对吧?
  • 是的,但您不能使用条件和其他功能。请参考支持文档,它将以其他方式帮助您。
【解决方案2】:

在asp.net mvc中显示新记录时是否使用ajax

对于这种情况,使用 jquery 是最好的方法。因为您不必加载必须重新渲染脚本和内容的布局页面。 Stick on to Ajax calls in MVC as much as possible,技术正在改进,很多单页应用程序都在那里,如果我们仍然为每个新请求使用页面加载,那就没有意义了。

来比较传回部分视图和 Json 数据在应用程序设计中使用哪个更好

部分视图和 Json 数据根据场景具有相同的权重。

  • When to use partial view:假设您有一个模型,您必须通过大量 if 检查和循环以及可能的一些 c# 代码(在极少数情况下)等来构建视图 HTML,在这种情况下使用部分视图将是更好的选择,因为如果我们尝试使用 json 数据在 Jquery 中构建相同的东西,与在 Partial 视图中可以完成的相比,所需代码的复杂性会很高,但仍然可以实现,但不会那么容易,我们可能会在执行过程中出错发展。
  • When to use Json Data:如果需求是像更新网格、生成动态下拉菜单或者处理页面中的一些 Jquery 插件我认为 Json 数据会更好,因为许多插件以 json 数据作为核心需求。

在部分视图和 Json 数据之间做出决定的小例子 - 有兴趣的朋友请仔细阅读

让我们假设我们必须显示一个数据网格。这是我们最初的要求。所以我们可以愉快地用数据构建我们的 viewModel 并将其传递给我们的局部视图并使用 for 循环渲染表格。一切就绪,现在需求发生了变化,我们被要求在表中构建排序、过滤和分页内容。所以目前我们正在寻找一个可以轻松与当前代码集成的插件,是的,在这种情况下最容易使用的是Datatables。好的,我们编写了一个小 Jquery 来将插件应用到表中,所有这些我们都准备好了花哨的东西。

现在是棘手的部分,我们被要求添加功能,例如从表中添加、编辑、删除记录。是的,它是可能的,但使用我们拥有的当前代码以最好的方式完成它有点棘手。我们倾向于做的是,当表格发生变化时,我们计划调用部分视图。哪个工作正常,但仍然要求我们自己从表中删除一条记录再次重新加载部分视图是否很好?绝对不是,

我们能做什么?当有任何添加、编辑、删除操作时,我们点击控制器更新数据库,我们可以make the controller return a JSON data 并将此 Json 数据传递给插件 API 并刷新表,这将更加整洁和快速。所以在这里你会看到 JSON 数据将是更好的选择。还有一些人甚至可能希望通过只处理那条数据记录并编写一些 jquery 代码来操作表来使其更干净,这绝对没问题,但它需要我们将 Json 数据本身从控制器传回。

完成此操作后,我们可以返回并重构我们的代码以制作部分视图,以便最初也将 json 数据用于网格,或者将其保留为初始加载将是部分视图,但以下操作将是一个 json 结果,这很好,但我觉得让所有与数据相关的东西都来自一个点。

这就解释了一个简单的模块如何从部分视图变为使用 Json 数据。在某些情况下,故事是相反的,您必须为正确的工作选择正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 2013-08-15
    • 2020-03-30
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多