使动态生成的href调用c#函数

时间:2011-10-19 19:30:04

标签: c# asp.net html visual-studio-2010 htmlgenericcontrol

我正在尝试建立一个下拉列表。

this is the menu that I need to generate

我正在生成html ul& li标签如下,工作正常。但是,每次都有一个锚标记(参见内嵌注释);我需要能够调用一个函数并传递一个被单击的文本。我怎样才能做到这一点?

        foreach (var productType in productTypesNames.Keys)
        {
            var li = new HtmlGenericControl("li");
            nav.Controls.Add(li);
            var ul = new HtmlGenericControl("ul");

            var anchor = new HtmlGenericControl("a");
            anchor.Attributes.Add("href", "#");

            foreach (var pName in productTypesNames[productType] )
            {
                var subLi = new HtmlGenericControl("li");
                var anch = new HtmlGenericControl("a");
                anch.Attributes.Add("href", "#");
                //**THIS NEEDS TO CALL A C# FUNCTION AND PASS pName; instead of #**
                anch.InnerHtml = pName;
                subLi.Controls.Add(anch);
                ul.Controls.Add(subLi);
            }
            anchor.InnerHtml = productType;
            li.Controls.Add(anchor);
            li.Controls.Add(ul);
        }

2 个答案:

答案 0 :(得分:1)

如果您不介意回发或想要它,请使用LinkButton控件,轻松构建而不是HtmlGenericControl("a"),并让服务器端onclick方法调用您的其他方法。

否则你需要AJAX,正如其他人所解释的那样。

答案 1 :(得分:0)

让你的href执行JS功能,并且可以通过AJAX调用服务器。您可以拥有自己的代码,或者使用带有ASP.NET Ajax的jQuery或[WebMethod]

这个想法是你可以通过Ajax调用服务器来执行服务器端方法。

另外,看看JSONP的工作方式 - 也许你可以用你选择的URL参数“ping”另一个页面进行单向异步调用。