【问题标题】:What is the difference between Returning View as a Partial View and Json Result返回视图作为部分视图和 Json 结果有什么区别
【发布时间】:2015-01-09 08:44:19
【问题描述】:

Returning View as a Partial View 和 Json Result 有什么区别(在性能和其他方面)???

通过ajax调用控制器方法时,我们可以返回整个视图(不是部分视图)吗??

【问题讨论】:

    标签: asp.net-mvc json asp.net-ajax


    【解决方案1】:

    PartilaView

    1. Partialview 是一种普通视图,我们可以在多个视图中使用它。
    2. Partialview 有一些设计可以显示在您的视图中。

    杰森结果

    1. Jason Result 是我们可以在视图中使用的数据列表或单个数据。
    2. Jason Result 只返回一个数据,而不是像局部视图那样返回一个视图。

    我的模特喜欢

    public class ModelName_1
    {
        public string Name { get; set; }
        public int age { get; set; }
    }
    

    局部视图示例

    1.主视图代码:

    我在下面提到的名称partialView_1应该与您的部分名称匹配。 下面提到的 ModelName_1 必须与您在局部视图中提到的模型名称匹配。

    <div id="myPartial" >
        @Html.Partial("partialView_1", new ModelName_1())
    </div>
    

    2。部分查看代码:

    @model ModelName_1
    
    @if (Model != null)
    {
        var count = 1;
        <table class="table">
            <thead>
                <tr>
                    <td>No</td>             
                </tr>
            </thead>
            <tbody>          
                    <tr>
                        <td>Year @item.Year end </td>
                    </tr>                
            </tbody>
        </table>
    }
    

    Javascript

    $(document).ready(function () {
        $('#MybuttonId_2').on('click', function () {
            $.ajax({
                url: '@Url.Action("Mymethod")',
                type: 'GET',       
                success: function (result) {
                    $('#myPartial').html(result);
                }
            });
        });
    });
    

    Controller Action 方法应该如下所示

    [HttpGet]
    public ActionResult Mymethod()
    {
        ModelName_1 model= new ModelName_1();
        List<TableDetails> monthlyDetails = getYearlyDetails(fulldetails);
        return PartialView("_tableView", model);
    }
    

    ================================================ ==============================

    对于 JASON RESULT,我们必须像下面那样做

    控制器方法如下:

    [HttpPost]
    public JsonResult MyJasonMethod()
    {
        ModelName_1 model = new ModelName_1();
        return this.Json(model, JsonRequestBehavior.AllowGet);
    }
    

    JavaScript 如下所示:

    $(document).ready(function () {
        $('#MybuttonId').on('click', function () {
            $.ajax({
            url: '@Url.Action("MyJasonMethod")',
            type: 'POST',
            success: function (result) {
                 $('#mortagepayLable').text(result.Name);
                 // some thing you do with the jason result
                }
            )};
        });
    });
    

    【讨论】:

      【解决方案2】:

      在性能方面

      当两个东西的设计目的完全不同时,你无法比较它们。

      JSONResult 用于从 Controller 操作返回 json。

      PartialView用于返回部分html内容。

      当两者产生不同的输出时,您如何比较性能?

      通过ajax调用控制器方法时,我们可以返回整个视图(不是部分视图)吗??

      是的,你可以。您将获得整个 html 的结果。但是,如果您只需要刷新网页的一部分,则不应该这样做。而是在这种情况下使用部分视图,这样它就不会包含布局或任何母版页。

      【讨论】:

      • 与部分视图相比,返回 json 结果时的有效负载会小得多。
      • @MariaPithia 但是当你想要刷新页面的一部分时如何使用 Jsonresult 以及当你想要来自服务器的新数据时如何使用局部视图?有可能吗?
      • 在 json 结果的情况下,客户端将需要大量编码,但是是的,在部分视图的情况下,我认为可能不会是这种情况
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      • 2011-01-17
      • 2013-09-11
      相关资源
      最近更新 更多