jquery добавление + код позади
-
07-07-2019 - |
Вопрос
Я динамически добавляю строки в 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>
вы увидите последние изменения, внесенные вами на стороне сервера , но изменения на стороне клиента пропали.
Только значения <=> (и текстовая область, опция и т. Д.) публикуются на сервере при отправке, поэтому изменение их на клиенте будет видно на сервере после публикации страницы. Р>