الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استدعاء أمر response.redirect من داخل class

بدأه wisdom2010 في 7 ديسمبر 2010 · 7 رد · 687 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

أرجو مساعدتي في الموضوع التالي ، أنا أعمل على Object Oriented Project

وأنشأت عدد من ال classes و أريد أن تكون كل الأوامر التي يحتاجها البرنامج موجودة في functions داخل هذا ال class

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

المشكلة انني عندما أكتب response.redirect ("~/default2.aspx")

لا يتعرف عليها ، فكيف أصل لهذا الأمر من داخل ال class ????

أفيدوني ولكم جزيل الشكر

#2

السلام عليكم

قم بإستخدام التالى :

HttpContext.Current.Response.Redirect ("something.aspx");

فى امان الله

تم تعديل هذه المشاركة بواسطة Ahmed Moosa في 7 ديسمبر 2010 في 22:20

Ahmed Moosa

Microsoft Community Contributor | MCC

Microsoft Certified Professional Developer | MCPD

Microsoft Certified Technology Specialist | MCTS

Senior .NET Developer

.Net Trainer

English blog : http://weblogs.asp.net/ahmedmoosa/

مدونة عربى : http://ahmedmoosa.wordpress.com/

#3
Ahmed Moosa كتب:

السلام عليكم

قم بإستخدام التالى :

HttpContext.Current.Response.Redirect ("something.aspx");

فى امان الله

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

هذا هو الكود :

 Public Function check_user(ByVal user As String, ByVal pass As String) 
        Dim selectsql As String
        selectsql = "select * from customer WHERE username=user and password=pass"

        Dim con As New SqlConnection(connectionstring)
        Dim cmd As New SqlCommand(selectsql, con)
        Dim reader As SqlDataReader
        Try
            con.Open()
            reader = cmd.ExecuteReader()
            reader.Read()
            HttpContext.Current.Session("user") = reader("username").ToString
            If HttpContext.Current.Session("user") = "" Then
                MsgBox("invalid username/password")
            Else
                HttpContext.Current.Response.Redirect("~\reserve.aspx")
            End If

            reader.Close()

        Catch ex As Exception

        Finally
            con.Close()
        End Try

    End Function

وجزاك الله خيراً على المساعدة

تم تعديل هذه المشاركة بواسطة wisdom2010 في 8 ديسمبر 2010 في 13:59

#4

السلام عليكم

ارى من الافضل ان تقوم بالانتقال من خلال صفحة وليس من داخل الكلاس وذلك عن طريق تحويل check_user الى حقل منطقي boolean وارجاع نعم/لا وعلى اساس ذلك تنتقل في الصفحة .

وبالنسبة للكود السابق :استخدام msgbox خطأ كبير في تطبيقات الويب وانما بدل من ذلك استخدم Response.write او console.write .

ولمعرفة المشكلة عليك بالقيام بتتبع الكود Debug ومعرفة المشكلة بنفسك .

#5
TareqVB كتب:

السلام عليكم

ارى من الافضل ان تقوم بالانتقال من خلال صفحة وليس من داخل الكلاس وذلك عن طريق تحويل check_user الى حقل منطقي boolean وارجاع نعم/لا وعلى اساس ذلك تنتقل في الصفحة .

السلام عليكم

مرحباُ : طارق

ليس هناك فرق فى هذا الأمر لأننا نتخطاه بإستخدام HttpContext.Current ولابد أن تعمل . ولا شك فى ذلك , وإنما الخطأ كان فى جملة الإستعلام السابقة ,

"select * from customer WHERE username=user and password=pass"

والسؤال هنا للسائل : هل هناك مستخدم بإسم user وله كلمة مرور pass , وإن كنت تعتقد انه سيقوم بأخذ المتغيرات التى تم تعريفها فى الدالة check_user فأنت مخطئ . لا يتم التعريف هكذا .

وإنما يتم بتعريف Parameters . وإبحث عن هذا الإمر فى المنتدى .

فى أمان الله .

تم تعديل هذه المشاركة بواسطة Ahmed Moosa في 8 ديسمبر 2010 في 15:43

Ahmed Moosa

Microsoft Community Contributor | MCC

Microsoft Certified Professional Developer | MCPD

Microsoft Certified Technology Specialist | MCTS

Senior .NET Developer

.Net Trainer

English blog : http://weblogs.asp.net/ahmedmoosa/

مدونة عربى : http://ahmedmoosa.wordpress.com/

#6

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

#7

بارك الله فيكم جميعاً وزادكم علماً ..... جزاكم الله خيرا على المساعدة

لقد عملت بكل ما ذكرتم ،، بالفعل كانت تنقص جملة cmd.parameters.addwithvalue(,)

وأيضا جعلت الدالة ترجع قيمة boolean وبناء عليها يتم الانتقال للصفحة الأخرى ، وأزلت ال msgbox من داخل ال class

الحمدلله اشتغل هذا الكود بشكل جيد ،، لكن بقيت مشكلة وهي أنني في أحد ال functions قمت بوضع جملتي update ..أما الأولى فتنفذ بدون مشاكل ،، لكن الثانية لا تعدل شيئا على الجدول المطلوب

هل ا لمشكلة في ان هناك حقل في كل من الجدولين بنفس الاسم (id) ؟؟؟؟

هذا هو الكود

 
    Public Function reserve_car(ByVal w As Integer, ByVal x As Integer, ByVal y As String, ByVal z As String)

        Dim connectionstring As String = WebConfigurationManager.ConnectionStrings("constr").ConnectionString
        Dim updatesql As String
        updatesql = "update customer set car_id=@car_id,start_date=@start_date,end_date=@end_date where id=@id"
        Dim con As New SqlConnection(connectionstring)
        Dim cmd As New SqlCommand(updatesql, con)
        cmd.Parameters.AddWithValue("@id", x)
        cmd.Parameters.AddWithValue("@car_id", w)
        cmd.Parameters.AddWithValue("@start_date", y)
        cmd.Parameters.AddWithValue("@end_date", z)
        Dim updated As Integer = 0
        Try
            con.Open()
            updated = cmd.ExecuteNonQuery()

        Catch ex As Exception
            MsgBox("error..." & ex.Message)
            con.Close()
        End Try


        'these lines changes the state of the car to :"reserved"

        Dim updatesql2 As String
        updatesql2 = "update cars set state='" & "reserved" & "' where id=@cid"
        Dim con2 As New SqlConnection(connectionstring)
        Dim cmd2 As New SqlCommand(updatesql2, con2)
        cmd2.Parameters.AddWithValue("@cid", w)
        Dim updated2 As Integer = 0
        Try
            con2.Open()
            updated2 = cmd.ExecuteNonQuery()
            MsgBox("The car has been reserved successfully")
        Catch ex As Exception
            MsgBox("error..." & ex.Message)
            con2.Close()
        End Try
    End Function

أعلم أني قد أثقلت عليكم بأسئلتي لكني جديد في مجال ال asp.net

بارك الله فيكم وجزاكم خيراً على المجهود الرائع ،، في موازين حسناتكم بإذن الله

#8

السلام عليكم

جيد أنك توصلت لجديد .

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

مرحباً بك ! .

1

Ahmed Moosa

Microsoft Community Contributor | MCC

Microsoft Certified Professional Developer | MCPD

Microsoft Certified Technology Specialist | MCTS

Senior .NET Developer

.Net Trainer

English blog : http://weblogs.asp.net/ahmedmoosa/

مدونة عربى : http://ahmedmoosa.wordpress.com/

مواضيع مشابهة