0

我的网站上有一个控件,它是从具有基本形式的 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 标签的索引并将该索引发送到 a 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 查询只是一个用于更密集内容的微不足道的占位符)。

4

0 回答 0