سؤال

لقد بحثت في أسئلة مماثلة على تجاوز سعة مكدس ولكن لم تكن قادرة على العثور على حل لهذه المشكلة بالذات.لدي بسيط (وليس حقا ، ولكن دعونا نتظاهر) ASP.NET صفحة مع تحديث لوحة داخله.

في هذا التحديث الفريق هناك HiddenField السيطرة مع القيمة التي سيتم تعيين/تحديث عن طريق بلدي مخصص جافا سكريبت.قيمة هو تحديث أستطيع أن أرى في DOM باستخدام الحرائق.

بجانب هذا HiddenField هناك LinkButton الذي يدعو جافا سكريبت إلى تعديل قيمة HiddenField باستخدام OnClientClick (يعمل هذا).على LinkButton أيضا OnClick معالج الذي أعدم بعد قيمة عدل.

ومع ذلك ، في OnClick معالج, أحصل على القيمة الأولية HiddenField وليس القيمة التي تم تعيينها من قبل جافا سكريبت!

لماذا هذا ؟ هذا حال "PEBKAC"?

تحرير: حاولت نفس الشيء مع TextBox من دون أي نجاح.كما حاول تعديل القيمة يدويا باستخدام الحرائق قبل تقديم النموذج ، من دون أي نجاح.

تحرير 2: أنا فقط أدركت أن Page_Load يسمى قبل OnClick معالج الذي كان إفساد الأمور.سوف يتم حذف السؤال عن الآخرين قد يكون لها نفس المشكلة و قد تجد هذا السؤال القيم.

هل كانت مفيدة؟

المحلول

سيكون لديك للقيام بذلك باستخدام EndRequestHandler الحدث ، المقدمة من اياكس تحديث لوحة.

يرجى النظر في هذا ... >

http://www.codeproject.com/KB/ajax/AfterAjaxUpdate.aspx?display=Print

نصائح أخرى

هذا يبدو لي كما لو كان viewstate يجعلك مزحة سيئة (كما في كثير من الأحيان).ما أعتقد أنه عندما الصفحة المشاركات مرة أخرى ، المخفية مجال تهيئة مع القيمة الواردة في Viewstate.

محاولة شيء واحد:لا الوصول إلى القيمة مباشرة من خلال yourHiddenField.Value ولكن في OnInit من الصفحة الخاصة بك الحصول عليه مع Request.Forms[yourHiddenField.UniqueId] ويلقي إلى HiddenField واستخراج القيمة.لست متأكدا إذا كان هذا هو الحق في الجملة.على "نشر" القيم ينبغي أن يكون في طلب كائن في مكان ما إذا كنت أتذكر الحق.انظر إذا كان يمكنك الحصول على قيمة هناك.إذا كنت تحصل عليه هناك مشكلة viewstate التي يتم تعيينها مرة أخرى بعد OnInit الحدث من الصفحة.ثم علينا أن نجد حلا لهذا...

كيف يتم توليد المدخلات الجديدة على العميل ؟ سيكون من الممكن تنفيذ ذلك على الملقم بدلا من ذلك ؟

بهذه الطريقة يمكنك استخدام فقط OnClick بدلا من كل OnClick و OnClientClick.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top