2013-09-24 2 views
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> 

C# код:

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"); 
} 

я говорил Call a C# function in ASP.NET when clicking on a HTML link.

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

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

вы должны добавить 'RUNAT = "сервер"'. –

+2

или использовать «LinkButton». –

+0

Извините, что я этого не говорил. Я добавил runat = "server", и он все еще не работает. – Srinivas

ответ

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-файле. Я хочу добавить click here из моего файла aspx.cs. Я попытался сохранить его в строке и добавить его в HTML через element.InnerHtml, но он рассматривается как строка и, следовательно, не работает. Помоги пожалуйста – Srinivas

1

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

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

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

+0

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

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

Я сделал то, что вы предложили, но он все еще не работает. – Srinivas

+0

@Srinivas: Вы можете уточнить? Каким образом это не работает? Как выглядит клиентский HTML-код? Подсказка: если 'runat =" server "' отображается на стороне клиента, выпущенной HTML, вы каким-то образом добавляете эти ссылки неправильно. Как вы динамически добавляете их? – David

+0

Функция не вызывается. В представлении исходного кода страницы в моем браузере отображается runat = "server". Когда я нажимаю на ссылку, функция не вызывается. – Srinivas

Смежные вопросы