【问题标题】:MVC same object is passed to @Html.Partial()...?MVC 相同的对象被传递给@Html.Partial()...?
【发布时间】:2016-10-12 11:25:59
【问题描述】:

我陷入了困境。

@foreach (BLL.Report.ReportSection section in @Model) {
    @Html.Partial("~/Views/Report/_ReportSection", section)
}

@Model 包含两个 ID 为 1,2 的对象

加载局部视图

["~/Views/Report/_ReportSection" ]

它正在调用ajax调用从数据库中获取数据。

我调试了这个部分对象。这些是精细且独立的对象。 但在加载时它两次都获得第二个对象。

当对控制器进行 ajax 调用时,它总是传递第二个对象 (id = 2) 的数据。

并加载相同的结果以供查看。

请告知我缺少什么。?

更新 抱歉迟到了。。

这是 _ReportSection 部分视图中的完整代码。 准备好函数 ajax 调用并返回数据它正在创建表

<div id="Section-@Model.ReportId-@Model.SectionId">

</div>
<script type="text/javascript">
    $(document).ready(function () {// alert("text-"+@Model.SectionId);
        getSectionData();
    });

    function getSectionData(){
        alert(@Model.ReportId+" -- "+@Model.SectionId);
        CallAjax("GET",
            "json",
            "/ReportTemplate/GetSectionData",
            { ReportId: @Model.ReportId, SectionId: @Model.SectionId },
            getSectionDataSuccess,
            getSectionDataFail)

    }

    function getSectionDataSuccess(data)
    {
        var table = $('<table></table>');
        var rowHeader = $('<th></th>');
        $.each(data, function(index,column) {
            var cell = $('<td></td>').text(column.ColHeader);
            rowHeader.append(cell);
        });
        table.append(rowHeader);

        $.each(data[0].columnDataList, function(index,colObj)
        {
            var row = $('<tr id="@Model.SectionId-'+colObj.RowId+'"></tr>');
            table.append(row);
        });


        $.each(data, function(index,colObj)
        {
            $.each(colObj.columnDataList, function(index,colData)
            {
                var td = $('<td id="@Model.SectionId-'+colData.RowId+'-'+colData.ColName.trim()+'">'+colData.Data.trim()+'</td>');

                var row = $(table).find('#@Model.SectionId-'+colData.RowId);

                $(table).find('#@Model.SectionId-'+colData.RowId).append(td);
            });

        });
        $('#Section-@Model.ReportId-@Model.SectionId').append(table);
    }

    function getSectionDataFail(xhr, ajaxOptions, thrownError)
    {
        //alert("Ajax Failed!!!");
    }
</script>

【问题讨论】:

  • 显示您的 _ReportSection 部分视图和执行此 AJAX 调用的 js
  • 请同时显示部分视图和操作的代码。
  • 在这种情况下Model的类型是什么?
  • 能否请您出示来自 _ReportSection 的 AJAX 调用?
  • Ajax 调用正在返回正确的单个对象数据。问题是两次相同的 AJAX 调用都是使用相同的参数进行的。(第二个对象的参数)

标签: .net asp.net-mvc


【解决方案1】:

谢谢各位。我做了一个工作。我从部分视图中删除了 javascript 代码并放置在父页面中。这对我有用。

但我试图通过在局部视图中使用 javascript 将部分分开。

通过改变它现在可以正常工作的方式。 如果有人可以解释,我仍然想知道原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2011-12-30
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多