2013-05-01 1 views
0

여기 내가하려는 일이 있습니다. 드롭 다운에서 값을 선택하고 해당 페이지와 포스트 백으로 이동하십시오.ASP.NET, 드롭 다운 목록 및 응답 리디렉션

1.aspx 페이지

<asp:ListItem>a</asp:ListItem> 
    <asp:ListItem>b</asp:ListItem> 
    <asp:ListItem>c</asp:ListItem> 
    <asp:ListItem>d</asp:ListItem> 
</asp:DropDownList> 

Csfile :

세부 사항을 작성 후, 'A'페이지 a.aspx로 리디렉션 옵션을 선택에
protected void Page_Load(object sender, EventArgs e) 
{  
    if (!IsPostBack) 
    { 
     DropDownList1.Enabled = true;   
    } 
    else 
    { 
     DropDownList1.Enabled = false; 
     DropDownList1.Attributes.Add("disable", "disable"); 
     if (this.Session["Template"] == "a ") 
     { 
      this.DropDownList1.Attributes.Add("disable", "disable"); 
     } 
    } 

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (DropDownList1.SelectedValue == "a") 
    { 
     Response.Redirect("~/a.aspx"); 
     DropDownList1.Attributes.Add("disable", "disable"); 
    } 

1 페이지로 다시 이동 .aspx

여기에서 드롭 다운을 사용하지 않도록 설정하여 사용자가 특정 Dr opdown. 나는 위의 모든 옵션을 시도했지만 아무 것도 효과가 없었다.

답변

0

페이지로 다시 이동할 때 더 이상 다시 게시가 아니기 때문에 항상 드롭 다운 목록을 사용할 수 있습니다. 포스트 백은 페이지가 다른 페이지가 게시 할 때가 아니라 자신에게 되돌아 오는 경우에만 사용됩니다.

코드에 "다시 게시하는 경우이 작업을 수행하고 그렇지 않으면 다시 시도하십시오."라는 메시지가 표시되고 실제로 "다르게"치는 경우는 없습니다.

변경이이 같은 뭔가 있도록 :

것은 이것은 당신이 드롭 다운 목록에 대한 HTML보기상의 Enabled="false"이없는 가정됩니다. 그렇지 않은 경우 Enabled=true;을 기본값으로 true으로 설정할 필요가 없습니다.

if (!IsPostBack)  
    {  

       if (this.Session["Template"] == "a ")  
       {  
        DropDownList1.Enabled = false;  
       }   

    } 
+0

답장을 보내 주셔서 감사합니다. 하지만 여전히 효과가 있습니다. 내 CS 파일은 이제 무효를 Page_Load (개체를 보낸 사람, EventArgs입니다 전자) { 을 보호하는 경우 (! IsPostBack을) {경우 (this.session [ "템플릿"] == "A") { DropDownList1.Enabled = 거짓; } } – user2340141

+0

세션 [ "템플릿"]'에 실제로 ""a "가 있는지 확인하십시오 - 디버거에서 유효성을 검사하십시오 - 단지 그것이 설정된 것으로 가정하지 마십시오 :) – Darren

+0

예"a "가 표시됩니다. 그러나 일하지 않는다. – user2340141