我有一个中继器:

 <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" />


单击此按钮将打开一个包含转发器中每个项目的某些数据的框。

javascript - 如何将Repeater onclick按钮项中的数据传递到JavaScript文件以在Ajax中使用-LMLPHP

我用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');

            }
        }
    });
});

09-25 21:02