заставить динамически сгенерированный href вызывать функцию c # - PullRequest
1 голос
/ 19 октября 2011

Я пытаюсь создать раскрывающийся список, как показано ниже.

this is the menu that I need to generate

Я создаю HTML-теги ul & li, как показано ниже, и работает нормально.Тем не менее, каждый раз, когда есть тег anch (см. Встроенный комментарий);Мне нужно иметь возможность вызывать функцию и передавать текст, который был нажат.Как я могу это сделать?

        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 ]

1 голос
/ 19 октября 2011

Если вы не возражаете против обратной передачи или хотите ее использовать, используйте элемент управления LinkButton, который легко собирается динамически вместо HtmlGenericControl("a"), и пусть метод onclick на стороне сервера вызывает другой метод.1004 * В противном случае вам нужен AJAX, как объяснили другие.

0 голосов
/ 19 октября 2011

У вашего href есть функция JS, которая может вызывать сервер через AJAX. Вы можете создать собственный код или использовать jQuery или [WebMethod] s с ASP.NET Ajax.

Идея состоит в том, что вы можете выполнить метод на стороне сервера, вызвав сервер через Ajax.

Кроме того, посмотрите, как работает JSONP - может быть, вы можете «пропинговать» другую страницу с параметрами URL по вашему выбору для выполнения одностороннего асинхронного вызова.

...