我正在尝试建立一个下拉列表。
我正在生成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);
}
答案 0 :(得分:1)
如果您不介意回发或想要它,请使用LinkButton
控件,轻松构建而不是HtmlGenericControl("a")
,并让服务器端onclick方法调用您的其他方法。
否则你需要AJAX,正如其他人所解释的那样。
答案 1 :(得分:0)
让你的href
执行JS功能,并且可以通过AJAX调用服务器。您可以拥有自己的代码,或者使用带有ASP.NET Ajax的jQuery或[WebMethod]
。
这个想法是你可以通过Ajax调用服务器来执行服务器端方法。
另外,看看JSONP的工作方式 - 也许你可以用你选择的URL参数“ping”另一个页面进行单向异步调用。