jquery добавление + код позади - PullRequest
2 голосов
/ 15 сентября 2009

Я динамически добавляю строки в 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. Я думаю, что мне здесь не хватает основного принципа.

1 Ответ

1 голос
/ 15 сентября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...