2011-05-16 10 views
1

일부 항목이 포함 된 패널 막대가 있습니다. 항목을 마우스 오른쪽 버튼으로 클릭하고 "새 탭에서 열기"를 선택하면 새 탭에서 링크를 열어야합니다. 예를 들어. 내 페이지 인 경우 "HTTP : 로컬 호스트/마이 페이지" 내 그리드입니다 : 내가 클릭URL에서 검색어 문자열 매개 변수를 숨기는 방법

이름

  • ABC
  • BCD
  • CDE

두 번째 항목 인 navigateUrl은 "http : localhost/MyPage /? Name = bcd "

잘 작동합니다. 하지만 URL에 이름을 숨기고 싶습니다. 다른 방법이 있습니까, URL에 노출하지 않고 이름을 다음 페이지로 전달할 수 있습니다. 세션을 사용할 수는 있지만 유감스럽게도 기본 컨텍스트 메뉴의 코드로 작성할 수는 없습니다.

+0

_Why_ 숨기시겠습니까? 고급 사용자 인 경우 원하는 효과를 얻으려면 URL을 직접 변경하는 것이 좋습니다. 예 : 'http : //www.google.com/search? q = this + will + work + great'. –

+0

바보들은 왜 이런 종류의 포럼에서 "왜 그것을 숨기고 싶습니까?"라는 질문을하고 있습니까? 진지하게 ... 보안 ... 힘들어! 모든 웹 사이트가 공개 된 것은 아닙니다. 일부는 내부에 있으므로 특정 정보를 안전하게 보관해야합니다. – Fandango68

답변

0

쿠키를 설정할 수 있습니다. 다음 번에 사용자가 쿠키를 반환하면 같은 페이지로 되돌릴 수도 있습니다 (원하는 경우).

this article이 유용한 옵션인지 결정할 때 도움이 될 수 있습니다.

클라이언트 쪽에서 쿠키를 설정해야하는 경우 this article이 도움이 될 것입니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 어떻게 코드에 쿠키를 설정할 수 있습니까? "새 탭에서 열기"의 클릭 이벤트에 대한 코드를 추가 할 수있는 방법이 있습니까? – Noel

+0

그냥 도움이되는 링크를 추가했습니다. – Nathan

+0

다시 한번 Nathan에게 감사 드려요. 그러나 쿠키 세부 정보를 정확히 어디에 추가 할 수 있습니까? 브라우저의 기본 컨텍스트 메뉴이며 "새 탭에서 링크 열기"를 클릭하면 필자는 일부 코드를 추가하는 방법을 알지 못합니다. – Noel

2

LinkButton 개체를 사용할 수 있습니다. 그들은 포스트 백을하고 요청을 원하는 페이지로 리디렉션 할 수 있습니다.

ASPX :

<asp:linkbutton id="lnkabcd" runat="server" text="abcd" onclick="lnkabcd_clicked"/> 

C 번호 : 당신이 링크의 많은 경우가 매우 복잡 할 것이다 당연히

public void linkabcd_clicked(object sender, EventArgs e) 
{ 
    Response.Redirect("URL OF TARGET PAGE"); 
} 

. 그리드를 사용할 수 있습니다 (질문에 쓰는대로 사용 하시길 바랍니다). 명령 이름과 명령 인수 속성으로 행 이벤트를 잡으십시오.

브라우저의 주소 표시 줄에서 URL을 숨기려면 URL 재 작성을 수행해야합니다. URL 재 작성에 대한 자세한 내용은 codeprojectmsdn 페이지를 참조하십시오.

0

@ TheVillageIdiot에 따르면, URL 재 작성이 더 나은 접근 방법입니다. 하지만 cross-page posting 능력도 사용할 수 있습니다. 그것을 체크 아웃 : 앞의 코드에서 볼 수 있듯이

마크 업

<asp:HiddenField ID="HiddenField1" runat="server" ClientIDMode="Static" /> 

<asp:Repeater ID="Repeater1" runat="server"> 
    <ItemTemplate> 
     <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Second.aspx" Text='<%# Bind("Text") %>' OnClientClick='<%# "LinkButton1_Click(\"" + Eval("Value") + "\")" %>' /> 
    </ItemTemplate> 
</asp:Repeater> 

<script type="text/javascript"> 
    function LinkButton1_Click(v) { 
     document.getElementById('HiddenField1').value = v; 
    } 
</script> 

, 당신은 간단한 자바 스크립트에 의해 선택된 항목을 저장하는 숨겨진 필드를 추가해야합니다. 또한 다른쪽에 숨겨진 필드의 값을 얻기 위해 SelectedValue이라는 속성을 정의했습니다.대상 페이지 지시자 다음

protected void Page_Load(object sender, EventArgs e) 
{ 
    Repeater1.DataSource = new[] { 
     new { Text = "Item 1", Value = "Item 1" }, 
     new { Text = "Item 2", Value = "Item 2" }, 
     new { Text = "Item 3", Value = "Item 3" } 
    }; 
    Repeater1.DataBind(); 
} 

public string SelectedValue 
{ 
    get { return HiddenField1.Value; } 
} 

두 번째 페이지

추가 뒤에

코드입니다.

<%@ PreviousPageType VirtualPath="~/Default.aspx" %> 

마지막으로, 당신은 Page 클래스의 PreviousPage 속성을 통해 이전 페이지에 액세스 할 수 있습니다.

string value = ((_Default)this.PreviousPage).SelectedValue; 
+0

감사합니다. Mehdi와 TheVillageIdiot,이 방법을 사용해 보겠습니다. – Noel

+0

나는 그것을 시도했다. 하지만 한 가지 문제가 있습니다. 이전 페이지는 첫 번째 페이지와 같습니다. 그래서, 그것은 나에게 "순환 참조 오류"를 주었다. 내 시나리오는 다음과 같습니다. 몇 줄짜리 그리드가 있습니다. 내가 그것을 클릭하면, 일부 위젯은 선택된 행/선택된 패널 항목의 세부 사항을 보여주는로드합니다 (어느 쪽이든). 이제이 기능을 새 창에 표시하려면 새 페이지에서 이미 행을 선택했으며 특정 위젯을로드해야 함을 알 수 있도록해야합니다. – Noel

+0

용서해주십시오. @Noel, 나는하지 않았습니다. 당신의 질문에 충분한주의를 기울이지 마십시오. –

관련 문제