C# 如何从包含post生成内容的网页发回信息?

C# 如何从包含post生成内容的网页发回信息?,c#,html,html-lists,C#,Html,Html Lists,好的,我对html和网络非常陌生。现在,我正在尝试动态生成列表项,然后将它们发布回web服务器,这样我就知道该用户正在尝试获取什么 以下是生成列表项的代码: foreach (var item in dataList) { MyDataList.InnerHtml += "<li><a runat='server' onclick='li_Click' id='" + item.Name + "-button'></a></li>"; }

好的,我对html和网络非常陌生。现在,我正在尝试动态生成列表项,然后将它们发布回web服务器,这样我就知道该用户正在尝试获取什么

以下是生成列表项的代码:

foreach (var item in dataList) {
    MyDataList.InnerHtml += "<li><a runat='server' onclick='li_Click' id='" + item.Name + "-button'></a></li>";
}
我的问题是如何确定单击了哪个列表项

顺便说一句,后面运行的代码是C#

编辑1

LinkButton link = new LinkButton();
link.ID = "all-button";
link.Text = "All";
link.Click += new EventHandler(link_Click);
MyDataList.Controls.Add(link);
下面是我的link\u Click事件,它似乎从来没有碰到过断点

void link_Click(object sender, EventArgs e) {
    if (sender != null) {
        if (sender.GetType() == typeof(LinkButton)) {
            LinkButton button = (LinkButton)sender;
            if (button.ID == "all-button") {

            }
        }
    }
}
我知道这是可能的,我只是不知道我错过了什么

编辑2

好吧,好吧,我想我知道问题出在哪里了。我试图在另一个列表中添加第二个列表。这导致整个事情出现了问题。它现在正在工作。

您可以轻松地执行此操作

onclick='li_Click(this)'
编辑:-
在编辑内容之后
您必须在pageLoad()中创建服务器端的所有控件,才能在服务器端获取click事件。。还需要更多的客户端脚本。

我认为最好先调用javascript函数,然后使用$.get或$.post将数据发送回服务器

下面是一个使用LinkButtons的示例

代码隐藏:

for (int i = 0; i < 10 ; i++)
{
    LinkButton link = new LinkButton() { ID = "link_" + i };
    link.Text = "Link " + i;
    link.Click+=new EventHandler(link_Click);
    this.Form.Controls.Add(link);
}

protected void link_Click(object sender, EventArgs e)
{
    //Every time a link is clicked it will get here in the server side
}
for(int i=0;i<10;i++)
{
LinkButton link=newlinkbutton(){ID=“link”+i};
link.Text=“link”+i;
link.Click+=新建事件处理程序(link\u Click);
this.Form.Controls.Add(link);
}
受保护的无效链接\u单击(对象发送者,事件参数e)
{
//每次单击链接时,它都会出现在服务器端
}

祝你好运

这是给C#的吗?我试着将它添加到我的foreach循环中,但它似乎没有产生任何不同。不,这只是简单的javascript事实,您添加了“runat='server'和“id”“属性并不意味着它们将是服务器控件。如果希望链接按钮控件成为服务器控件,则应添加它们。我现在将添加一个示例。您正在使用asp.net web表单数据列表吗?@prashantht No我现在正在尝试尽可能远离.net web控件。我将在明天试一试。因此,当我收到链接时,我可以将发件人转换回LinkButton,然后获得正确的文本?确切地说,您只需要一个父容器来添加LinkButton子项。我不确定我在这里做错了什么。我添加了与上面完全相同的代码。但是,当我调试时,当我单击链接时,它什么也不做。奇怪的是,我还有其他可以点击的按钮,它运行得很好。不过,这些按钮及其单击事件是在编译时之前注册的。然而,现在我遇到了另一个问题。因为服务器控件是动态创建的。当它发回时,它也会运行页面加载事件,而不仅仅是单击事件。有可能摆脱它吗?@meanbunny,每次回发都会触发页面加载事件。如果不希望执行某些代码,则必须将其放在“If”语句中,并使用_EVENTTARGET变量来了解导致回发的控件。
for (int i = 0; i < 10 ; i++)
{
    LinkButton link = new LinkButton() { ID = "link_" + i };
    link.Text = "Link " + i;
    link.Click+=new EventHandler(link_Click);
    this.Form.Controls.Add(link);
}

protected void link_Click(object sender, EventArgs e)
{
    //Every time a link is clicked it will get here in the server side
}