我的网站上有一个控件,它是从一个具有基本形式的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查询只是一个简单的占位符,用于更密集的东西)。