通过AJAX访问集合的序数列索引

时间:2013-11-05 18:16:41

标签: c# javascript jquery linq

我的网站上有一个控件,它是从一个具有基本形式的JSON字符串呈现的:

<div class="drugCard">
    <span>DrugId: 1</span>
    <span>DrugClass: HHH </span>
    <span>DrugDosage: 100 </span>
    <span>DrugName: Drug1</span>
</div>

Drugs对象是包含div,span标记内的文本表示属性名称。我试图使用jQuery来查找span标记的索引并将该索引发送到ScriptMethod,这样我就可以使用LINQ来查询数据库而无需编写一堆存储过程。以下一点AJAX代码将正确的数据发送到服务器:

 $('.drugCard span').click(function () {
                console.log($(this).index());
                var index = JSON.stringify({ 'index': $(this).index() });
                $.ajax({
                    type: "POST",
                    url: "../Service.asmx/LinqTest",
                    data: index,
                    dataType: "json",
                    contentType: "application/json",
                    success: function (data) {
                        console.log(data.d);
                        console.log('the ajax call was successful');
                    },
                    error: function (xhr) {
                        console.log('the ajax call failed');
                        console.log(xhr.status);
                    }
                });
            });

为简单起见,以下服务器端方法无法从数据库中读取:

   [WebMethod]
    [ScriptMethod]
    public string LinqTest(int index)
    {
        List<Drugs> drugList = new List<Drugs>()
        {
            new Drugs() { DrugId=1, DrugClass="HHH", DrugDosage=120, DrugName="Drug1"},
            new Drugs() { DrugId=2, DrugClass="H2H", DrugDosage=100, DrugName="Drug2"},
            new Drugs() { DrugId=3, DrugClass="HHH", DrugDosage=100, DrugName="Drug3"},
            new Drugs() { DrugId=4, DrugClass="WA2", DrugDosage=200, DrugName="Drug4"}
        };
            var query = (from d in drugList
                         select d[index]).Max().ToString();

            return query;
        }

这给了我错误:cannot apply indexing [] to an expression....。我的网页不会像在这里一样具有前言的属性名称。有没有办法我可以使用LINQ的索引器来实现我想要的东西(这里的LINQ查询只是一个简单的占位符,用于更密集的东西)。

0 个答案:

没有答案