2010-07-26 47 views
0

我有页面A,B和C.在C的页面加载中,我使用了查询字符串参数来显示一些表,这取决于它来自哪里,无论是A还是B.有取消按钮。当用户点击取消,它必须检查它来自哪里,并应重定向到同一页面,我的意思是A或B.我一点都不知道如何使用查询字符串进行重定向。根据查询字符串重定向页面

请帮我一把!

谢谢!

回答

2

您可以使用这样的基地在查询字符串重定向:

var pageToredirectTo = "default.aspx"; 

switch(Request.QueryString["param"]) { 
    case "a": 
     pageToredirectTo = "pageA.aspx"; 
     break; 
    case "b": 
     pageToredirectTo = "pageB.aspx"; 
     break; 
} 
Response.Redirect(pageToRedirectTo); 
+0

谢谢!它工作得很好! :) – Ram 2010-07-26 13:54:48

0

作为一个很好的做法,最好在页面上创建属性保存,以使其在ViewState中查询字符串的值为将来的使用安全并防止黑客的意外行为。 以下代码并非完全针对您的情况,而是 - 如果您希望如何使用查询字符串 - 它是使用查询字符串传递的值来指定哪些数据将显示在页面上,并且此页面上有许多可以进行多次回传的按钮最后你会根据查询字符串的值将用户重定向到另一个页面。

public class Default : Page 
{ 
    private readonly string VS_Bool_FromPageA = "VS_Bool_FromPageA"; 

    protected void Page_Load(object sender,EventArgs e) 
    { 
    if(!IsPostBack) 
    { 
     if(!string.IsNullOrEmpty(Request["frompageA"]) 
     { 
     bool fromA; 
     if(bool.TryParse(Request["frompageA"],out fromA) && fromA) 
      FromPageA = true; 
     else 
      FromPageA = false; 
     } 
    } 
    } 


    private bool FromPageA 
    { 
    get 
    { 
     if (ViewState[VS_Bool_FromPageA] != null) 
     { 
     return (bool)ViewState[VS_Bool_FromPageA]; 
     } 
     else 
     return false; 
    } 
    set 
    { 
     ViewState[VS_Bool_FromPageA] = value; 
    } 
    } 

    //if the user changed the value of the query string before hitting the cancel button 
    //your logic will stay consistent 
    protected void buttonCancel_Click(object sender,EventArgs e) 
    { 
    if(FromPageA) 
     Response.Redirect("~/pagea.aspx"); 
    else 
     Response.Redirect("~/pageb.aspx"); 
    } 
}