c# - بالإضافة إلى تسجيل الدخول سلسلة الاستعلام



javascript asp.net (9)

لدي تطبيق ويب تم إنشاؤه باستخدام C # و asp.net. لقد وضعت قيمة معلمة في الاستعلام عن طريق علامة الجمع (+). لكن علامة الجمع تختفي.

كيف يمكنني تضمين علامة الجمع (+) في سلسلة الاستعلام دون أن تختفي؟

يرجى تقديم النصيحة.

شكر.

تحرير: رمز المضافة مع UrlEncode

string str = Server.UrlEncode(Requery.QueryString["new"]);

Answers

أضف هذا السطر في فك تشفير Funcation:

strText = strText.Replace(" ", "+");

جرب هذا ، وهو يعمل بالنسبة لي:

Request.QueryString["new"].Trim();

علامة + لها معنى دلالي في سلسلة الاستعلام. يتم استخدامه لتمثيل الفضاء. هناك شخصية أخرى لها أهمية دلالة في سلسلة الاستعلام وهي والتي يتم استخدامها لفصل مختلف أزواج var=value في سلسلة الاستعلام.

تقوم معظم البرامج النصية من جانب الخادم بفك تشفير معلمات الاستعلام قبل استخدامها ، بحيث يتم تحويل + بشكل صحيح إلى مسافة. الآن ، إذا كنت تريد وجود حرفي + في سلسلة الاستعلام ، فأنت بحاجة إلى تحديد %2B بدلاً من ذلك.

+ تسجيل الدخول في سلسلة الاستعلام هو فك شفرة URL لمسافة. %2B في سلسلة الاستعلام يتم فك ترميز URL إلى علامة +.

انظر الفرق بين

http://www.google.com/search?q=foo+bar

و

http://www.google.com/search?q=foo%2Bbar

في الأمثلة أعلاه ، يقوم البرنامج النصي لخادم Google بفك تشفير عنوان URL لمعلمات الاستعلام ثم استخدامها لإجراء البحث.

ترميز URL ليس سوى علامة % متبوعة برمز ست عشري للحرف الخاص. على سبيل المثال ، نعلم أن كود hex لـ A هو 0x41 (عشري: 65). جرب هذا:

http://www.google.com/search؟q=٪41

نأمل أن يكون هذا يجعل ترميز URL واضحًا.

لذلك ، إذا كنت تريد الاحتفاظ بعلامة + عندما يقوم جافا سكريبت بجلب عنوان URL بعلامات + في معلمات الاستعلام الخاصة به وسيقوم البرنامج النصي من جانب الخادم بمعالجة معلمات الاستعلام بعد فك ترميز URL ، فيجب عليك ترميز URL لمعاملات الاستعلام في عنوان URL قبل استخدام إصدار طلب الحصول على HTTP بحيث يتم تحويل جميع علامات + إلى %2B عندما يصل الطلب إلى البرنامج النصي من جانب الخادم. الآن عندما يقوم عنوان URL للنص البرمجي من جانب الخادم بفك تشفير سلسلة الاستعلام ، يتم تحويل كل %2B مرة أخرى إلى علامات + وهو ما تريده.

انظر تشفير URL في جافا سكريبت؟ لمعرفة كيفية ترميز URL للمعلمات باستخدام JavaScript. إجابة قصيرة من المناقشة هناك:

var encodedURL = "http://example.com/foo.php?var=" + encodeURIComponent(param);


هناك طريقة بسيطة أخرى وهي Request.Url.ToString().Substring(Request.Url.ToString().IndexOf("=") + 1) افتراض أن عنوان URL الخاص بي هو ، http://localhost/MyApp/Activate.aspx?ActivationCode=cHbtqH9P2dDZkx/mYUgFFo7nrNqSFgqdPisAzzu5/nwlEYDOHI+CQw==


قبل إرسال المعلمة ، تحتاج إلى التحقق مما إذا كانت المعلمة تحتوي على علامة زائد ، وإذا كنت بحاجة إلى استبدال علامة واحدة ، على سبيل المثال: المعلمة هي: klasjdlkasd + djid3223 ، يمكنك استبدال: klasjdlkasdFLAGdjid3223

وعندما تذهب تحويل ، تحتاج إلى استبدال angain

klasjdlkasd + djid3223


يجب عليك URLEncode قيم سلسلة الاستعلام الخاصة بك للتأكد من عدم فقدان أي أحرف خاصة.



فقط إضافة /g

document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');

إلى

// Replace 'hello' string with /hello/g regular expression.
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

/g تعني عالميًا





c# javascript asp.net