Нахождение идентификатора ссылки

0

Я добавил динамически ссылки на страницу asp. При щелчке я вызываю функцию. Я хочу узнать идентификатор ссылки, вызывающей функцию. Я добавил google.com и yahoo.com, чтобы объяснить свои потребности. Я хочу, чтобы функция извлекала данные из db в исходном сценарии, который я сделал.

 <a href="#"  onServerClick="abc_Click" id="4"/>click</a>
 <a href="#" onServerClick="abc_Click" id="5"/>click here</a>

Код С#:

 protected void abc_Click()
 {
    if(id is 4) // don't know how to know the id of the link that calls the function. 
      Response.Redirect("http://www.google.com");
    else
      Response.Redirect("http://www.yahoo.com");
 }

Я ссылался на вызов функции С# в ASP.NET при нажатии на ссылку HTML.

Теперь у меня две проблемы.

  1. Функция не вызывается при нажатии ссылки.
  2. Я не знаю, как найти идентификатор ссылки, которая вызывает функцию.
Теги:

3 ответа

1
Лучший ответ

Вам не хватает атрибута runat-server. Если вы включите это, вам необходимо иметь ссылку в форме. Но вы не можете передать идентификатор ссылки на сервер (если вы сначала не измените скрытое поле с помощью JS, а затем опубликуете скрытое поле). Однако это очень сложное решение довольно простой задачи.

Самый простой способ - просто добавить запрос, а затем выполнить вызов db в Page_Load.

Пример:

<a href="/mypage.aspx?id=4" />click</a>
<a href="/mypage.aspx?id=5" />click here</a>

И затем в коде:

public void Page_Load(object sender, EventArgs e)
{
    if(Request.QueryString["id"] == "4")
    {
        Response.Redirect("http://www.google.com");
    }
    else
    {
        Response.Redirect("http://www.yahoo.com");
    }
}
  • 0
    Это прекрасно работает, если я жестко запрограммировал его в моем файле aspx. Я хочу добавить <a href="/mypage.aspx?id=5" /> нажмите здесь </a> из моего файла aspx.cs. Я попытался сохранить строку и добавить ее в HTML через element.InnerHtml, но он обрабатывается как строка и, следовательно, не работает. Помогите, пожалуйста
2

Вы пропустили важный атрибут для ссылки на эти ссылки на стороне сервера:

runat="server"

Это должно быть примерно так:

<a href="#" runat="server" onServerClick="abc_Click" id="4"/>click</a>
<a href="#" runat="server" onServerClick="abc_Click" id="5"/>click here</a>

Как вы добавляете их динамически, между прочим? Надеюсь, серверная сторона. Потому что, если они добавляются через JavaScript на клиенте, то слишком поздно для сервера связывать события с ними.

Он также рекомендовал, чтобы вы не делали эти ссылки, поскольку они на самом деле не связаны ни с чем. (" href="#" просто говорит ему перейти в начало страницы.) Поскольку они якобы публикуют на сервере для принятия какого-либо действия на стороне сервера, они лучше работают как кнопки. (Что бы сделать то, что вы пытаетесь сделать намного проще, кстати.) Кнопки могут быть стилизованы, чтобы выглядеть как ссылки, если это необходимо для UX.

Для вашего обработчика на стороне сервера также требуются дополнительные аргументы:

protected void abc_Click(object sender, EventArgs e)

В этом случае sender будет элемент, который был нажат. Вы можете передать его этому типу элемента и получить всю необходимую информацию от него, включая его свойство .Id.

  • 0
    Я сделал то, что вы предложили, но это все еще не работает.
  • 0
    @Srinivas: Можете ли вы быть более конкретным? Как это не работает? Как выглядит клиентский HTML-код? Подсказка: если runat="server" виден в runat="server" на стороне клиента, значит, вы как-то неправильно добавляете эти ссылки. Как вы их динамически добавляете?
Показать ещё 4 комментария
1

добавьте runat = "server" к вашей разметке html, чтобы этот элемент был доступен на вашем сервере. В противном случае это просто элемент html, и на сервере, к которому, очевидно, невозможно получить доступ...

<a href="#" runat="server" onServerClick="abc_Click" id="4" />

Вам также нужно будет правильно реализовать обработчик событий, потому что в вашей реализации отсутствуют параметры

  • 0
    Извините, что я не упомянул. Я добавил runat = "server", и он все еще не работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню