Вопрос

Я динамически добавляю строки в divStaff, используя jquery:

$("span[id$='lblAddStaff']").click(function() {
        //$(".staff_tpl").find("input[id$='txtRate']").val("0,00");
        var staff_row = $(".staff_tpl");
        staff_row.find(".staff_row").attr("id", "Emp" + counter);
        $("div[id$='divStaff']").append(staff_row.html());
        counter += 1;            
    });

строка, которую я добавляю, находится внутри скрытого div с class = " .staff_tpl " Я добавляю содержимое этого div в divStaff

Когда я отправляю страницу (постбэк), полученный divStaff всегда пуст, если я пытаюсь отобразить его так:

lblTest.Text = divStaff.innerHtml.ToString

По сути, я манипулирую клиентской частью div и хочу получить доступ к серверной стороне через кодовую строку моей страницы aspx. Я думаю, что мне здесь не хватает основного принципа.

Это было полезно?

Решение

Этого нельзя сделать.
Если вы хотите получить доступ к данным, которые вы создали на странице, вы должны поместить их в поля ввода (возможно, скрытые) и получить доступ к ним после публикации, используя Request.Form["MyHiddenFieldName"].
<div> s не размещены на сервере. runat="server" элементы заключены в ViewState (действительно, это большая строка - вы можете видеть ее в источнике своей страницы), что дает абстракцию непрерывности (или иллюзию этого). Однако это укус не знает об изменениях, которые вы делаете в DOM.
При работе с элементами <input> вы увидите последние изменения, внесенные вами на стороне сервера , но изменения на стороне клиента пропали.
Только значения <=> (и текстовая область, опция и т. Д.) публикуются на сервере при отправке, поэтому изменение их на клиенте будет видно на сервере после публикации страницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top