Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以Json MVC+;的形式返回对象的异步列表;击倒_C#_Json_Asynchronous_Knockout.js - Fatal编程技术网

C# 以Json MVC+;的形式返回对象的异步列表;击倒

C# 以Json MVC+;的形式返回对象的异步列表;击倒,c#,json,asynchronous,knockout.js,C#,Json,Asynchronous,Knockout.js,以下代码是常规控制器(不使用API)的一部分,我需要向knockout.js文件返回多个值。问题是,文件正在等待接收Json,当我发送列表时,我收到一条消息说“SyntaxError:位置0处Json中的意外令牌S”,但如果我更改签名并将对象转换为Json,则linq for async不会运行 <!-- ko if:detail() --> <div class="col-md-4"> <div class

以下代码是常规控制器(不使用API)的一部分,我需要向knockout.js文件返回多个值。问题是,文件正在等待接收Json,当我发送列表时,我收到一条消息说“SyntaxError:位置0处Json中的意外令牌S”,但如果我更改签名并将对象转换为Json,则linq for async不会运行

        <!-- ko if:detail() -->

        <div class="col-md-4">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h2 class="panel-title">Detail</h2>
                </div>
                <table class="table">
                    <tr><td>AreaEquipment</td><td data-bind="text: detail().AreaEquipment"></td></tr>
                    <tr><td>InspectionID</td><td data-bind="text: detail().InspectionID"></td></tr>
                </table>
            </div>
        </div>

        <!-- /ko -->
我的问题是,如何使用async获取列表(这样它就可以在knockout中工作),并且仍然以JSON的形式发送列表?或者我应该走哪条路?

public async Task<List<InsDetDTO>> LoadInsDet(int id)
    {
        var ins = await db.INSPECTIONDETAILS
            .Select(t =>
            new InsDetDTO()
            {
                Id = t.ID,
                AreaEquipment = t.AreaEquipment,
                InspectionID = t.InspectionID
            }).Where(t => t.InspectionID == id).ToListAsync();
        return ins;
    }
        <!-- ko if:detail() -->

        <div class="col-md-4">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h2 class="panel-title">Detail</h2>
                </div>
                <table class="table">
                    <tr><td>AreaEquipment</td><td data-bind="text: detail().AreaEquipment"></td></tr>
                    <tr><td>InspectionID</td><td data-bind="text: detail().InspectionID"></td></tr>
                </table>
            </div>
        </div>

        <!-- /ko -->
查看 检查
  • 细节
  •         <!-- ko if:detail() -->
    
            <div class="col-md-4">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h2 class="panel-title">Detail</h2>
                    </div>
                    <table class="table">
                        <tr><td>AreaEquipment</td><td data-bind="text: detail().AreaEquipment"></td></tr>
                        <tr><td>InspectionID</td><td data-bind="text: detail().InspectionID"></td></tr>
                    </table>
                </div>
            </div>
    
            <!-- /ko -->
    

            <!-- ko if:detail() -->
    
            <div class="col-md-4">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h2 class="panel-title">Detail</h2>
                    </div>
                    <table class="table">
                        <tr><td>AreaEquipment</td><td data-bind="text: detail().AreaEquipment"></td></tr>
                        <tr><td>InspectionID</td><td data-bind="text: detail().InspectionID"></td></tr>
                    </table>
                </div>
            </div>
    
            <!-- /ko -->
    
    
    细节
    区域设备
    检查ID
    
    在玩了一点之后,我发现了我的问题,在控制器中,如果我先将结果更改为列表,然后当我转换为JSON时,更容易在视图中捕捉到它们,这些是我的更改,希望这会对某人有所帮助

            <!-- ko if:detail() -->
    
            <div class="col-md-4">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h2 class="panel-title">Detail</h2>
                    </div>
                    <table class="table">
                        <tr><td>AreaEquipment</td><td data-bind="text: detail().AreaEquipment"></td></tr>
                        <tr><td>InspectionID</td><td data-bind="text: detail().InspectionID"></td></tr>
                    </table>
                </div>
            </div>
    
            <!-- /ko -->
    
    查看请注意,单击:$parent.getInspectionDetails会在KO代码中填充详细信息,这样我就可以使用foreach来处理所有详细信息

            <!-- ko if:detail() -->
    
            <div class="col-md-4">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h2 class="panel-title">Detail</h2>
                    </div>
                    <table class="table">
                        <tr><td>AreaEquipment</td><td data-bind="text: detail().AreaEquipment"></td></tr>
                        <tr><td>InspectionID</td><td data-bind="text: detail().InspectionID"></td></tr>
                    </table>
                </div>
            </div>
    
            <!-- /ko -->
    
    <div class="col-md-4">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h2 class="panel-title">Inspections</h2>
                    </div>
                    <div class="panel-body">
                        <ul class="list-unstyled" data-bind="foreach: inspections">
                            <li>
                                <strong><span data-bind="text: Id"></span></strong>
                                <span data-bind="text: date"></span>
                                <strong><span data-bind="text: labDesc"></span></strong>
                                <span data-bind="text: username"></span>
                                <small><a href="#" data-bind="click: $parent.getInspectionDetails">Details</a></small>
                            </li>
                        </ul>
                    </div>
                </div>
                <div class="alert alert-danger" data-bind="visible: error"><p data-bind="text: error"></p></div>
            </div>
    <!-- ko if:detail() -->
            <div class="col-md-4">
                <div class="panel panel-default">
                    <div class="panel-heading">
                        <h2 class="panel-title">Detail</h2>
                    </div>
                    <table class="table">
                        <tr class="list-unstyled" data-bind="foreach: detail">
                            <td>AreaEquipment</td><td data-bind="text: AreaEquip"></td>
                            <td>InspectionID</td><td data-bind="text: Inspectionid"></td>
                        </tr>
                    </table>
                </div>
            </div>
    

    我要做的是将action方法的url放在浏览器的地址栏中,最好是chrome,因为它将显示json而不强制您保存它,并查看它返回什么。然后分析返回。我得到[{“Id”:2,“InspectionID”:12,“AreaEquipment”:"F“}]没关系,问题是它不是异步的,它是异步的。KO期望的是什么:数组?因为那是数组。我添加了app.js(KO)视图控制器方法的返回类型是什么?它返回的是JsonResult吗?看起来你得到的数据是JS而不是JSON。