ASP.NET: قراءة القيم المتغيرة للنموذج في صفحة الإجراء في نموذج البحث

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

  •  21-09-2019
  •  | 
  •  

سؤال

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

   <form id="search" method="post" action="Results.aspx">
    <input id="txtSearchKey" type="text" name="txtSearchKey" />
    <input id="Submit1" type="submit" value="submit" /><br />
    <br />
</form>

في Results.aspx ، أريد قراءة القيمة التي أدخلها المستخدم في مربع TXTSEARCHKEY. ما هي الطريقة المثالية للقيام بذلك؟ انا إستعملت

 string strKey = Request.Form["txtSearchKey"].ToString(); 

لكنه يرمي استثناء مرجع فارغ. من فضلك النصيحة

لا أريد أن أحصل على جميع الصفحات في ASP.NET.I أريد فقط أن يكون لديك صفحة النتائج مثل ASP.NET

شكرا لك مقدما

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

المحلول

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

على سبيل المثال:

<input id="txtSearchKey" type="text" name="txtSearchKey" />

نصائح أخرى

يمكنك الحصول على حقل TxtSearchKey الخاص بك بهذا:

string strKey = PreviousPage.Request.Form["txtSearchKey"].ToString();

ولكن ، بدلاً من استخدام إجراء النموذج لإعادة توجيه بحثك إلى صفحة أخرى ، يمكنك استخدام زر مع خاصية postbackurl من هذا القبيل:

<asp:Button runat="server" ID="btnSearch" PostBackUrl="Search.aspx" />

لأنه في ASP.NET ، للحصول على أكثر من نموذج واحد غير مسموح.

هل هناك أي سبب لا تستخدمه

Form Runat = "Server"

ثم اسحب حقل نص وزر في هذا النموذج. ثم DoubleClick الزر واكتب الرمز الذي تريده.

إذا كنت تريد أن تفعل ذلك ، فأنت بحاجة إلى إعطاء اسم SA الخاص بك = "txtMySearchKey" حتى تعمل

الطريقة التي تسير بها الأشياء ليست هي الطريقة التي تعمل بها في نماذج الويب ASP.NET. الطريقة المفضلة هي استخدام عناصر التحكم في خادم ASP.NET والأحداث لتجريد العملية التي تحاول تحقيقها. على سبيل المثال ، يجب أن يكون النموذج الخاص بك حقًا مثل هذا (لاحظ سمة Runat = "Server" التي تمكنك من الرجوع إلى عناصر التحكم برمجيًا):

<form id="form1" runat="server">
    <div>
        <asp:Panel ID="PanelSearch" runat="server" DefaultButton="ButtonSubmit">
            <asp:TextBox ID="TxtSearchKey" runat="server" /><br />
            <asp:Button ID="ButtonSubmit" Text="Submit" runat="server" 
                onclick="ButtonSubmit_Click" /><br />
        </asp:Panel>
    </div>
</form>

ثم ، في الكود الخاص بك خلفك سوف تتعامل مع ButtonSubmit_Click مثل هذا الحدث لتمكينك من الحصول على القيمة من TxtSearchKey مربع الكتابة:

protected void ButtonSubmit_Click(object sender, EventArgs e)
{
    string strKey = TxtSearchKey.Text;
}

انظر مثال QuickStart للتحكم في مربع النص لمزيد من المعلومات.

فقط لا تستخدم .ToString () بعد request.form ... لن يعطي مرجعًا فارغًا بعد ذلك.

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