jquery добавяне + код зад

Добавям динамично редове към 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 страница. Мисля, че тук пропускам основен принцип.


person Stijn Van Loo    schedule 15.09.2009    source източник


Отговори (1)


Това не може да бъде направено.
Ако искате да получите достъп до данните, които сте създали на страницата, трябва да ги поставите в полетата за въвеждане (евентуално скрити) и да получите достъп до тях, след като са били публикувани с помощта на Request.Form["MyHiddenFieldName"].
<div>s aren не е публикувано на сървъра. runat="server" елемента са екодирани във ViewState (голям низ, наистина - можете да го видите в изходния код на вашата страница), давайки абстракцията за непрекъснатост (или илюзията за нея). Това жило обаче не е наясно с промените, които правите в DOM.
Когато работите с runat="server" елементи, ще видите последните промени, които сте направили от страната на сървъра, но от страната на клиента промените са изчезнали.
Само <input> (и текстова област, опция и т.н.) стойности се публикуват на сървъра при изпращане, така че промяната им на клиента ще се види на сървъра след страницата беше публикувано.

person Kobi    schedule 15.09.2009
comment
Останах с впечатлението, че добавянето на runat=server и уникален идентификатор към div ви позволява да получите достъп до сървъра? Не е ли така? - person Stijn Van Loo; 15.09.2009
comment
Можете да получите достъп до div с runat=server от страната на сървъра. - person rahul; 15.09.2009
comment
@phoenix - разбира се, но не и за промените, които сте направили с jQuery. Греша ли някъде? - person Kobi; 15.09.2009
comment
Благодаря, Коби, твоята редактирана публикация изяснява много. Има смисъл всички промени в DOM клиентската страна да не се улавят от страна на сървъра. Ще се опитам да използвам входен елемент. - person Stijn Van Loo; 15.09.2009