ASP.NET:جافا سكريبت تعديل قيمة HiddenField قبل تقديم
-
08-07-2019 - |
سؤال
لقد بحثت في أسئلة مماثلة على تجاوز سعة مكدس ولكن لم تكن قادرة على العثور على حل لهذه المشكلة بالذات.لدي بسيط (وليس حقا ، ولكن دعونا نتظاهر) 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
.