PDA

View Full Version : آموزش: کلاسی به جای response.redirect با توانایی انتقال به صورت popup و ...



Beyondsoft
سه شنبه 26 آبان 1388, 20:33 عصر
سلام دوستان !

حتماً شما هم بسیاری از مواقع نیازمند شده اید که صفحه ای را به صورت مستقل و یا به صورت popup و یا با اندازه مشخص و ... باز کنید و با این مشکل موجه بوده اید و مجبر به استفاده از کد های جاوااسکریپت چون windows.open شده اید!
پس در بسیاری از مواقع که نیاز به این کار در حالت server side بوده است، بسیار به زحمت افتاده اید. کلاس زیر مشکل شما را حل خواهد کرد :

در ضمن دوستان توجه کنند که این کلاس توسط بنده نوشته نشده است !



public static class ResponseHelper
{
public static void Redirect(string url, string target, string windowFeatures)
{
HttpContext context = HttpContext.Current;
if ((String.IsNullOrEmpty(target) || target.Equals("_self", StringComparison.OrdinalIgnoreCase)) && String.IsNullOrEmpty(windowFeatures))
{
context.Response.Redirect(url);
}
else
{
Page page = (Page)context.Handler; if (page == null)
{
throw new InvalidOperationException("Cannot redirect to new window outside Page context.");
}
url = page.ResolveClientUrl(url);
string script;
if (!String.IsNullOrEmpty(windowFeatures)) { script = @"window.open(""{0}"", ""{1}"", ""{2}"");"; }
else
{
script = @"window.open(""{0}"", ""{1}"");";
}
script = String.Format(script, url, target, windowFeatures);
ScriptManager.RegisterStartupScript(page, typeof(Page), "Redirect", script, true);
}
}
}



حال می توان به راحتی از کلاس بالا به اشکال مختلفن استفاده کرد.
مثلاً :



ResponseHelper.Redirect("Arvan.ir", "_blank", "height=300,width=300");


دوستان توجه داشته باشند که از تمام option های زیر می توان استفاده کرد:



'height=300,width=300,top=200,left=250,status=no,t oolbar=no,menubar=no,location=no,titlebar=no'

imanasp
سه شنبه 26 آبان 1388, 21:17 عصر
ممنون من این مشکلو داشتم تستش کردم جواب داد
فقط یه سوال چطور میشه پنجره کوچیکی روی پنجره اصلی باز کرد که مانع دید کنترل های صفحه اصلی نشه (بدون Ajax)

raziee
سه شنبه 26 آبان 1388, 21:25 عصر
ممنون. خیلی خوبه.
فقط اگه ممکنه منبع رو هم ذکر کنید.

Beyondsoft
سه شنبه 26 آبان 1388, 22:14 عصر
فقط یه سوال چطور میشه پنجره کوچیکی روی پنجره اصلی باز کرد که مانع دید کنترل های صفحه اصلی نشه (بدون Ajax)

می تونی از windows control های telerik استفاده کنی

yakooza2009
چهارشنبه 27 آبان 1388, 00:15 صبح
چه طوری باید از این کلاس استفاده کرد ؟
من این کلاس رو توی app_code قرار دادم
ولی نمیتونم ازش توی فرم های دیگه استفاده کنم

Mostafa_Dindar
چهارشنبه 27 آبان 1388, 10:04 صبح
ممنون. خیلی خوبه.
فقط اگه ممکنه منبع رو هم ذکر کنید.
http://weblogs.asp.net/infinitiesloop/..methods.aspx (http://weblogs.asp.net/infinitiesloop/archive/2007/09/25/response-redirect-into-a-new-window-with-extension-methods.aspx)

Beyondsoft
چهارشنبه 27 آبان 1388, 19:32 عصر
چه طوری باید از این کلاس استفاده کرد ؟
من این کلاس رو توی app_code قرار دادم
ولی نمیتونم ازش توی فرم های دیگه استفاده کنم

دوست عزیز یکی کلاس ایجاد کن و کد مذکور را در آن قرار بده.
سپس در هر جای پروژه که نیاز بود از دستور responsehelper.redirect استفاده کن !

ممکن است درصورت عدم یکسان بودن "فضا نام" به ذکر namespace نیز باشد !

yakooza2009
جمعه 29 آبان 1388, 00:22 صبح
اگه میشه این کلاس رو با وی بی پیادش کنید
ممنون میشم

Beyondsoft
جمعه 29 آبان 1388, 02:13 صبح
اگه میشه این کلاس رو با وی بی پیادش کنید
ممنون میشم



Public Module ResponseHelper
Private Sub New()
End Sub
Public Sub Redirect(ByVal url As String, ByVal target As String, ByVal windowFeatures As String)
Dim context As HttpContext = HttpContext.Current
If ([String].IsNullOrEmpty(target) OrElse target.Equals("_self", StringComparison.OrdinalIgnoreCase)) AndAlso [String].IsNullOrEmpty(windowFeatures) Then
context.Response.Redirect(url)
Else
Dim page As Page = DirectCast(context.Handler, Page)
If page Is Nothing Then
Throw New InvalidOperationException("Cannot redirect to new window outside Page context.")
End If
url = page.ResolveClientUrl(url)
Dim script As String
If Not [String].IsNullOrEmpty(windowFeatures) Then
script = "window.open(""{0}"", ""{1}"", ""{2}"");"
Else
script = "window.open(""{0}"", ""{1}"");"
End If
script = [String].Format(script, url, target, windowFeatures)
ScriptManager.RegisterStartupScript(page, GetType(Page), "Redirect", script, True)
End If
End Sub
End Module

shocraneh
سه شنبه 25 اسفند 1388, 13:15 عصر
من می خام فرمی که باز میشه همه اجزای صفحه رو حذف کنه منظورم toolbar وغیره است ، جوری که شبیه به یک پنل بشه . کد زیر رو هم استفاده کردم ولی هیچ تغییری حاصل نشد ؟؟

دوستان توجه داشته باشند که از تمام option های زیر می توان استفاده کرد:


'height=300,width=300,top=200,left=250,status=no,t oolbar=no,menubar=no,location=no,titlebar=no'

Beyondsoft
چهارشنبه 04 فروردین 1389, 16:42 عصر
من می خام فرمی که باز میشه همه اجزای صفحه رو حذف کنه منظورم toolbar وغیره است ، جوری که شبیه به یک پنل بشه . کد زیر رو هم استفاده کردم ولی هیچ تغییری حاصل نشد ؟؟

می تونی از telerik windows استفاده کنی !

naser2009
دوشنبه 09 فروردین 1389, 21:37 عصر
من می خام فرمی که باز میشه همه اجزای صفحه رو حذف کنه منظورم toolbar وغیره است ، جوری که شبیه به یک پنل بشه . کد زیر رو هم استفاده کردم ولی هیچ تغییری حاصل نشد ؟؟
سلام دوسته من
من که اینطوری استفاده میکنم و جواب هم میده

StringBuilder sb = new StringBuilder();
if (!ClientScript.IsClientScriptBlockRegistered("exampleScript"))
{
sb.Append("<script language='javascript' type='text/javascript'>");
sb.Append("window.open('PrintAccount.aspx','','scrollbars=yes ,toolbar=no,status=yes,location=no,dir ectories=no,width=710,height=600,top=50,left=150') ;");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "exampleScript", sb.ToString());
}
البته قبلش از System.Text استفاده کرده باشید!البته گاهی اوقات با popup blocker به مشکل بر میخوره نمیدونم واسه چی؟

naser2009
دوشنبه 09 فروردین 1389, 21:49 عصر
سلام دوستان !

حتماً شما هم بسیاری از مواقع نیازمند شده اید که صفحه ای را به صورت مستقل و یا به صورت popup و یا با اندازه مشخص و ... باز کنید و با این مشکل موجه بوده اید و مجبر به استفاده از کد های جاوااسکریپت چون windows.open شده اید!

[/]
سلام دوسته من این کد که بازم از Window.open استفاده میکنه
در ضمن یه مشکل اگه popup blocker فعال باشه چی؟ کاربر نمیتونه یه پنجره رو به صورت popup باز کنه کسی واسه این راه حلی داره؟
من با کد به مشکل برخوردم

StringBuilder sb = new StringBuilder();
if (!ClientScript.IsClientScriptBlockRegistered("exampleScript"))
{
sb.Append("<script language='javascript' type='text/javascript'>");
sb.Append("window.open('PrintAccount.aspx','','scrollbars=yes ,toolbar=no,status=yes,location=no,dir ectories=no,width=710,height=600,top=50,left=150') ;");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "exampleScript", sb.ToString());
}
پنجره باز نمیشه به علت اینکه popup blocker فعاله راهه حل چیست؟