PDA

View Full Version : لود دوباره تصویر ؟



sasan_vm
جمعه 29 اردیبهشت 1385, 15:48 عصر
سلام

یک Image در فرم دارم که مقدار ImageUrl آن همیشه ثابت است ولی محتویات فایل
تغییر میکند.

چگونه میتوانم بعد از Postback تصویر را دوباره لود کنم . همان تصویر قبلی را نشان میدهد !
اگر Ctrl+F5 را بزنم تصویر جدید لود میشود !

white fox
جمعه 29 اردیبهشت 1385, 16:00 عصر
مسیر عکس رو در روال PagePreRender بدید و به این ترتیب عکسی که جدید گذاشته شده خونده میشه....و عکس در هر بار PostBack عکس جدید رو خواهد خواند.

sasan_vm
جمعه 29 اردیبهشت 1385, 17:42 عصر
سلام

من این کد رو در Prerender گذاشتم ولی فرقی نکرد:



private void WebForm2_PreRender(object sender, System.EventArgs e)
{
imgID.ImageUrl = "Resource/rngImage/Random.gif";
}

white fox
جمعه 29 اردیبهشت 1385, 21:47 عصر
چه زمانی عکس رو تعویض میکنید؟ این تعویض به صورت فیزیکی هست؟ کجا این تغییر رو میدید؟
بیشتر توضیح بدید بچه های سایت بهتر و سریعتر میتونند راهنمائیتون کنند.

sasan_vm
جمعه 29 اردیبهشت 1385, 22:13 عصر
سلام
من یک Ticket روی فرم دارم که کاربر باید اون را وارد کنه حالا هر بار کاربر این متن نوشته
شده در Ticket را اشتباه وارد کنه دوباره ایجاد میشه و فایل گرافیکی تغییر میکند ولی
Image همچنان گرافیک مربوط به Ticket قبل را نشان میدهد.



private void CreateImage()
{
Verification ver = new Verification();
try
{
string strSalt;
ver.ColorBack = Color.DarkBlue;
ver.UpperCase = true;
ver.MinAngle = -50;
strSalt = ver.CreateImage(Server.MapPath("Resource\\rngImage\\Random.gif"), 100, 200);
if (ver.ErrorMsg != "")
throw new Exception(ver.ErrorMsg);
Session["Salt"] = strSalt;
imgID.ImageUrl = "Resource/rngImage/Random.gif";
}
catch(Exception ex)
{
ShowMsg(ex.Message, 0);
}
finally
{
ver = null;
}
}

private void btnSubmit_Click(object sender, System.EventArgs e)
{
if (txtMsg.Text.Equals(Session["Salt"].ToString()))
{
ShowMsg("ورود مجاز", 0);
Response.Redirect("WebForm1.aspx");
}
else
{
txtMsg.Text = "";
CreateImage();
ShowMsg("اطلاعات صحیح را وارد کنید !!!", 0);
}
}


روال CreateImage ابتدا در Page_Load یکبار اجرا میشود و سپس در Submit اشتباه !

msakbari
جمعه 29 اردیبهشت 1385, 22:23 عصر
سلام
این کاریکه بهت میگم انجام بده مطمئن هستم که نتیجه می گیری

علت این اتفاق اینه که محتوای این صفحه cache میشه
یک رها برای نجات شما اینه که
1- هر بار که نیاز داری عکس عوض بشه و بعد از اینکه عکس بطور فیزیکی آپدیت شد
مسیر عکس خود را به این صورت عوض کن

IMG.ImagrUrl = "picture.gif?1500"
این عدد باید یک عدد random باشه که میتونی بوسیله کلاس random اونو بسازی
موفق باشی.

آمد بهار و بی گل رویت بهار نیست باد صبا مباد چو پیغام یار نیست

msakbari
جمعه 29 اردیبهشت 1385, 22:25 عصر
البته چند راه دیگر هم وجود دارد ولی فکر کردم که شاید این جالبتر باشه و کاربردهای دیگری هم داشته باشه

white fox
شنبه 30 اردیبهشت 1385, 00:44 صبح
من خودم در پروژم مانند شما برای کاربر عکسی نشون میدم که رندم ساخته میشه...اما این عکس رو ذخیره نمیکنم...
روش من این است که عکس رو در صفحه دیگری میسازم و در صفحه ای که میخوام فرم رو پر کنه کاربرم و عکس هم باید اونجا نمایش داده بشه آدرس عکس رو در فرم آدرس اون صفحه ای که عکس در اون ساخته میشه دادم..
اینطوری دیگه مشکلی هم ندارم.

iekrang
شنبه 30 اردیبهشت 1385, 04:45 صبح
نمیدونم تا چه حد کار درستی باشه،ولی من زمانی با آپدیت شدن عکسهام این مشکل رو داشتم و صفحم رو مجبور به اجرای postBack میکردم.این طوری مشکلم حل شد:


window.nevigate('testPage.aspx')

sasan_vm
شنبه 30 اردیبهشت 1385, 06:31 صبح
سلام


IMG.ImagrUrl = "picture.gif?1500"

راه حل جالبی بود مرسی

sasan_vm
شنبه 30 اردیبهشت 1385, 17:40 عصر
سلام

مثل اینکه این مشکل نمی خواهد حل بشه دوست عزیز iekrang روی localhost درست
کار میکنه ولی روی host اصلی اگر 2 بار کد اشتباه وارد بشه برای مراتب بعدی همان تصویر
تکراری مرتبه 2 نشان داده میشود ! لطفا تست شود
http://www.digitalir.com/WebForm2.aspx

White Fox:


من خودم در پروژم مانند شما برای کاربر عکسی نشون میدم که رندم ساخته میشه...اما این عکس رو ذخیره نمیکنم...
روش من این است که عکس رو در صفحه دیگری میسازم و در صفحه ای که میخوام فرم رو پر کنه کاربرم و عکس هم باید اونجا نمایش داده بشه آدرس عکس رو در فرم آدرس اون صفحه ای که عکس در اون ساخته میشه دادم..
اینطوری دیگه مشکلی هم ندارم.


لطفا بیشتر توضیح دهید اگر میشه نمونه مثال.

Ehsan Rafsanjani
شنبه 30 اردیبهشت 1385, 19:07 عصر
من هم دقیقا با این مشکل روبر شدم ولی حل شد
پروژه من یک کلاس Vertify داره که با استفاده از روال به نام CreateImage عکس رندم ایجاد میکنه و در صفحه لوگین فراخوانی میشه
من برای این که عکس ها کش نشن از کد زیر استفاده کردم:


PrivateFunction VertificationCode() AsString
Dim verify AsNew verify
Dim salt AsString = verify.CreateImage(Server.MapPath(".\images\Vertify.gif"), 20, 50)
'در این قسمت یک استرینگ رندوم به آخر اسم عکس اضافه می کنیم که عکس در کش قرار نگیرد
Dim IntRnd AsNew Random
Randomize()
Image1.ImageUrl = "images/Vertify.gif" & "?" & IntRnd.Next(1, 5000).ToString
Return salt
EndFunction


PrivateSub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load, Me.Load

VertificationCode()

EndSub



از مقدار بازگشتی روال VertificationCode() هم می تونی واسه نگهداری مقدار عکس توی یک سسشن استفاده کنی

msakbari
شنبه 30 اردیبهشت 1385, 20:13 عصر
به نظر من همون طور که یکبار هم عرض کردم و دوست عزیزمون Ehsane Rafsanjani هم عرض کرده و بر اساس تجربه ای که دارم بهترین راه همون Random است .

iekrang
شنبه 30 اردیبهشت 1385, 20:38 عصر
خیلی جالب بود.ممنون از راه حلتون.