Ваш onServerClick
собирается переопределить href
в любом случае, и вместо того, чтобы вызвать обратную передачу ... так что я d рекомендуем просто извлекать все это и просто:
<li><a href="?id=101">Room 101</a></li>
<li><a href="?id=102">Room 102</a></li>
<li><a href="?id=103">Room 103</a></li>
а потом в коде позади:
protected void Page_Load(object sender, EventArgs e)
{
RoomClick();
}
private void RoomClick()
{
int roomId = 0;
//check to see if the id in the querystring exists and that it parses as an int.
if (!String.IsNullOrEmpty(Request.QueryString["id"]) && Int32.TryParse((Request.QueryString["id"]), out roomId))
{
//do something with roomId
}
}
Этот способ кажется более простым и простым в использовании, на мой взгляд. Ответ Джейсона также будет работать для вас. Я думаю, что маршрут запутан, хотя, хотя вы можете прочитать href
и получить это значение, вы не можете прочитать значение #
из URL ... и это просто не стандартный способ выполнить то, что вы хотите выполнить. Кроме того, как вы планировали легко получить номер # из этого href
?
Другая причина, по которой мне нравится этот маршрут, вы можете связать кого-то прямо в комнату, не сказав им щелкнуть что-то первым ... если id
есть, он загрузит информацию о комнате или что-то еще, что вы делаете.
ОБНОВЛЕНИЕ: Если вы не хотите, чтобы информация о номере в URL-адресе и по-прежнему нужна «PostBack», моя рекомендация по-прежнему остается другим. Вместо того, чтобы использовать LinkButton
, который был бы более «традиционным» способом (в веб-формы ASP.NET), чтобы сделать PostBack и передавать данные:
Так вместо этого, есть разметка, как:
<li><asp:LinkButton ID="_room104" OnCommand="RoomCommand" CommandArgument="104" Text="Room 104" runat="server"></asp:LinkButton></li>
<li><asp:LinkButton ID="_room105" OnCommand="RoomCommand" CommandArgument="105" Text="Room 105" runat="server"></asp:LinkButton></li>
, а затем код позади:
protected void RoomCommand(object sender, CommandEventArgs e)
{
int roomId = 0;
if (Int32.TryParse((string)e.CommandArgument, out roomId)) {
//do something with roomId
}
}
Вы пытаетесь получить ссылки, которые будут перенаправлены на другую страницу в Code Behind? Если это то, что вы пытаетесь сделать, вы можете использовать Page.Response.Redirect(), Page.Response.RedirectPermanent() или Server.Transfer. Вам нужно будет добавить URL-адреса внутри скобки. – Auguste