Используйте jquery для привязки к событию click вместо того, чтобы делать это на стороне сервера:
<a href="#" class="blah">Submit Me</a>
тогда в javascript что-то вроде:
<script type="text/javascript">
$('.blah').click(function() {
document.forms[0].submit();
});
</script>
Edit:
Хотя вы можете генерировать элементы пользовательского интерфейса с помощью codebehind, это не совсем так, как в asp.net. Используйте повторители, если вам нужно повторить генерацию элементов управления На самом деле, создание нескольких форм также не является способом asp.net, так как предполагает, что только одна форма выполняется в контексте сервера, а все остальное связывается с событием при отправке. В любом случае, кажется, что вы все еще изучаете asp.net и, вероятно, пришли из PHP или чего-то подобного.
Чтобы удовлетворить ваш запрос, я бы посоветовал не создавать JS на стороне сервера. Присвойте своим классам разные имена классов и используйте тот же метод, что и выше. Вам не нужно LinkButton
для отправки формы, простой якорь <a>
отвечает всем требованиям.
Вы можете использовать свойство ClientID
(если вы не используете классы), но вы должны сначала прикрепить родительский элемент управления к странице, чтобы алгоритм включился.
Итак, ваш код будет выглядеть примерно так:
protected Control CreateCommForm()
{
...
column1.Controls.Add(frm);
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes["onclick"] = "$('#" + frm.ClientID + "').submit();";
a.InnerText = "Submit me";
frm.Controls.Add(a);
return frm;
}
Альтернативный способ (лучшее разделение интересов)
protected Control CreateCommForm()
{
...
column1.Controls.Add(frm);
HtmlGenericControl a = new HtmlGenericControl("a");
a.Attributes["class"] = "submitter";
a.InnerText = "Submit me";
frm.Controls.Add(a);
return frm;
}
И в javascript мы находим родительскую форму и отправляем ее (это может быть в статическом js-файле):
<script type="text/javascript">
$('.submitter').click(function(
$(this).parents('form').submit();
));
</script>