我有一个中继器:
<div class="container" id="TourDetail">
<asp:Repeater ID="RptTourDetail" runat="server" DataSourceID="ODSTTitle" ItemType="Tour"
EnableViewState="false" OnItemDataBound="RptTourDetail_ItemDataBound">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<span class="ForGenHandle">
<%# Item.TourId %>
</span>
<div id="tright">
<input runat="server" type="button" name="name" value="INQUIRE" class="Inq" id="InqBtn" />
</div>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</div>
它使用我的存储库显示数据。
我在此Repeater中有一个按钮:
<input runat="server" type="button" name="name" value="INQUIRE" class="Inq" id="InqBtn" />
单击此按钮将打开一个包含转发器中每个项目的某些数据的框。
我用ajax来做。这是我的通用处理程序:
public void ProcessRequest (HttpContext context) {
int x = Convert.ToInt32(context.Request.QueryString["TourID"]);
context.Response.ContentType = "application/json";
context.Response.Write(JsonConvert.SerializeObject(new ATourDateRep().GetById(x)) );
}
这是我的JavaScript代码:
$('.Inq').click(function () {
$.ajax({
url: '../Services/TourDates.ashx?TourID=<%%>',
success: function (e) {
for (var i = 0; i < e.length; i++) {
$('<li />').html("<div>" +
e[i].TourStartDate + "</div>" + "<div>300$</div>" + " <div>500$</div>").appendTo('#list');
}
}
});
}
);
有谁知道如何将转发器每个项目的TourId作为查询字符串传递给通用处理程序?我的意思是:
url: '../Services/TourDates.ashx?TourID=<%%>'
如果需要,这是我的存储库:
public class ATourDateRep
{
private DatabaseEntities model = new DatabaseEntities();
public List<TourDate> GetById(int Id)
{
return model.TourDates.Where(e => e.TourId == Id).ToList();
}
}
最佳答案
您能否尝试以下方法:
1)修改<input>
行以将data-TourID
放入其中:
<input runat="server" type="button" data-TourID="<%# Item.TourId %>" name="name" value="INQUIRE" class="Inq" id="InqBtn" />
2)然后按如下所示修改JS代码:
$('.Inq').click(function () {
var TourID = $(this).data("TourID"); //read the tour ID
$.ajax({
url: '../Services/TourDates.ashx?TourID='+TourID,
success: function (e) {
for (var i = 0; i < e.length; i++) {
$('<li />').html("<div>" +
e[i].TourStartDate + "</div>" + "<div>300$</div>" + " <div>500$</div>").appendTo('#list');
}
}
});
});