كيف يمكنني تنفيذ نمط النشر / إعادة التوجيه / الحصول على WebForms ASP.NET؟

StackOverflow https://stackoverflow.com/questions/919516

  •  06-09-2019
  •  | 
  •  

سؤال

لذلك أنا أفهم أساسيات نمط PRG. لكنني لم آخذ تقنية لإتاحة بيانات تعسفية "الحصول على" مثيل الصفحة.

على سبيل المثال، قد أرغب في عرض رسائل ملاحظات مختلفة للمستخدم اعتمادا على عملها الذي بدأ بعد عون البريد.

ما كنت أفعله هو إرسال معرف كمعلمة سلسلة الاستعلام. هذا يعمل بشكل جيد ولكنه يقدم مشكلات إشارة مرجعية ولا يبدو أنه سيكون على نطاق واسع للغاية. ماذا لو كنت بحاجة إلى إرسال جميع العارضات؟

لسوء الحظ، أنا مرتبط بملابس الإنترنت في الوقت الحالي، ولم أتمكن من إقناع مؤسستي بالهجرة إلى MVC.

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

المحلول

إذا استمرت الحقول المنشورة قبل إعادة التوجيه وتحتاج إلى الوصول إلى تلك البيانات بعد إعادة التوجيه، وأود أن ألغيت معرف سجل (سجلات) البيانات على سلسلة الاستعلام أثناء ذكرك. يمكنك أيضا تحديد حالة للطلب (لعرض الرسائل وما إلى ذلك). ثم في صفحة الحصول على صفحة يمكنك قراءة البيانات وتفعل كل شيء معها.

لا أرى أي طريقة أخرى للتغلب على هذا كل صفحة تم الحصول عليها عن طريق الحصول عليها لن يتمكن من الوصول إلى الصفحة السابقة ViewState إلخ.

استخدام Server.Transfer سيكون لها نفس التأثير مثل التعامل مع المنشور على الصفحة الأصلية.

يمكنك استخدام متغيرات الجلسة لتخزين بيانات النشر، ولكن هذا ينتن.

نصائح أخرى

أعتقد أنه لا يزال بإمكانك استخدام طريقة الحصول على عنصر النموذج. في هذه الحالة، لن تتمكن من استخدام معرف عنصر تحكم الخاص بك بطريقة طبيعية. ولكن يمكنك استخدام مجموعة طلب الطلب للحصول على ViewState.

تحديث: آسف، لقد حاولت مرة أخرى. ووجدت أنه يمكنك الوصول إلى عنصر تحكم الخادم الخاص بك عن طريق معرفه في CodeBehind. مثل:

Response.Write(text1.Text)

انظر المثال:

صفحة ASPX (عنصر النموذج فقط):

< form id="form1" runat="server" method="get">
< div>
< asp:TextBox ID="text1" runat="server" />
< asp:Button ID="button1" runat="server" OnClick="buttonClick" />
< div>
< form>

ملاحظة: لقد استخدمت مساحة قبل كل "<" خلاف ذلك، لن تكون التعليمات البرمجية أعلاه مرئية.

الرمز وراء الصفحة (زر النقر فقط انقر):

protected void buttonClick(object sender, EventArgs e)
    {
        string text = Request.Params["text1"];

        Response.Write(text);
    }

عند النقر فوق الزر، ستبدو عنوان URL هذا:

http: // localhost: 1157 / website1 / default.aspx؟ __viewstate =٪ 2FWEPDWUKMTKWNJC4NTIWMWRKOJETHZ8LHQ53QLLSKZ8NCPEW80٪ 3D & __ EventValidation =٪ 2FWWAWKF٪ 2BPPPUCWKTJKGWCGKS34RGBVUS9OXN٪ 2FQKKHLKLKZPKUERBXHLM6U & Text1 = Ashish & Button1 =

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