PDA

View Full Version : سوال: مشكل ارسال QueryString با UrlRewriter !



merlin_vista
شنبه 04 آبان 1387, 11:09 صبح
سلام : :قلب:
فرض كنيد Rewriter زير را در وب كانفيگ ست كرديم :

<rewrite url="~/sp-(.+).aspx" to="~/m.aspx?a=$1"></rewrite>

سپس مقدار 1$ را بهش پاس ميديم .
تا اينجاي كار مشكلي نيست و درست كار ميكنه . :تشویق:
مشكل اينجاست كه من در برنامه خودم بنا بر يك شرطي (نه هميشه ) ميخواهم يه پارامتر ديگه اضافه كنم .


http://localhost/HamiSite/sp-1.aspx?b=2

ولي پارامتر b را نميشناسه . و پيغام Object reference not set ميده . :عصبانی:

سوال اينجاست كه به صفحه اي كه شبيه سازي شده است آيا به اين شكل ميشه پارامتر اضافه كرد يا نه ؟؟ :متفکر:
اگر نه پس تكليف چيه ؟؟ :اشتباه:

kiosksoft
شنبه 04 آبان 1387, 11:16 صبح
چه مقداری میفرستی و چطور میخونید؟

merlin_vista
شنبه 04 آبان 1387, 11:20 صبح
مقدار از نوع int هست .
و با

Request.QueryString["b"]
ميخونم .
از اينا فكر نكنم باشه . چون اصلاً b را تشخيص نميده .

kiosksoft
شنبه 04 آبان 1387, 11:33 صبح
من همیشه از این نوع پارامتر فرستادن ها استفاده میکنم ,تا حالا با چنین مشکلی برنخوردم.
شما زمانی این رشته تولید میشه و قبل از اینکه بخواین پارامتر رو بخونین چک کنید (یه بار دیگه)
اگه واقعا این http://localhost/HamiSite/sp-1.aspx?b=2 تولید بشه نباید خطا بده ... شاید b مقداری تو برنامه تون نمیگیره .

merlin_vista
شنبه 04 آبان 1387, 11:39 صبح
دوست عزيز چك كردم . ولي در صورتي كه پارامتر باشه . (b مقدار داشته باشد ) تشخيص داده نميشه و داخل if براي خواندن مقدار نمياد .

مشكل من اينه كه اگه توي يه صفحه شبيه سازي شده بخواهم پارامتر به اين شكلي كه گفتم بفرستيم . تشخيص داده نميشه ؟؟؟؟؟؟؟؟؟

kiosksoft
شنبه 04 آبان 1387, 11:43 صبح
منظورتون از شبیه سازی شده چیه ؟

merlin_vista
شنبه 04 آبان 1387, 11:51 صبح
منظورتون از شبیه سازی شده چیه ؟
شما يك بار پست شماره 1 را بخوانيد .
يعني با استفاده از UrlRewriter آدرس شبيه سازي شده است .

Behrouz_Rad
شنبه 04 آبان 1387, 11:53 صبح
وقتی که URL به سایت ارسال میشه، ابتدا از HttpModule مربوط به بازنویسی URL رد میشه. اگر سینتکس این URL با سینتکسی که در Web.Config واسش مشخص شده باشه یکی نباشه خطا گرفته میشه.

و اما... اینجاست که حتماً باید با Regular Expressions آشنا باشی! :)


<rewrite url="~/sp-(.+).aspx(\?b=\d)?" to="~/m.aspx?a=$1"></rewrite>

برای عبارت باقاعده مشخص کردم که "ممکنه" پارامتری با نام b با یک مقدار عددی هم وجود داشته باشه!

موفق باشید.