1

我正在尝试建立一个下拉列表,如下所示。

这是我需要生成的菜单

我正在生成 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);
        }
4

2 回答 2

1

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

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

于 2011-10-19T19:47:43.607 回答
0

让你href执行一个 JS 函数,它可以通过 AJAX 调用服务器。您可以编写自己的代码,或者将 jQuery 或[WebMethod]s 与 ASP.NET Ajax 一起使用。

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

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

于 2011-10-19T19:39:17.793 回答