2016-07-07 2 views
1

나는 ASP.Net에 상당히 새롭다. 하이퍼 링크를 클릭하면 Command.Value를 서버로 보내야합니다. Command.Value 값을 얻은 후에 코드가 올바른지 확인하고 특정 사이트로 리디렉션해야합니다. 그렇지 않으면 페이지를 다시로드하면됩니다. 내 하이퍼 링크가 적합한 지 물어보고 싶은 모든Codebehind에 Javascript를 통해 Command.Value 보내기

<asp:HyperLink 
ID="Link" 
runat="server" 
Visible="true" 
NavigateUrl="javascript:document.FormServer.Command.value = 
'test';document.FormServer.submit();" 
>Test!!</asp:HyperLink> 

첫째 : 여기 내 하이퍼 링크입니다. 또한 나는 내 If 문을 삽입해야하는 부분에 관한 코드에 조금 갇혀있다.

+0

document.FormServer가 익숙하지 않은 것 같습니다. "FormServer"라는 폼이 있다고 가정하면 document.forms [ "FormServer"]와 같은 작업을 수행 할 수 있습니다. 하지만 document.FormServer.Command.value는 저에게 알려지지 않았습니다. asp.net 양식을 게시 할 수 있습니까? – derloopkat

답변

2

나는 링크 URL에서 GET으로 매개 변수를 보내는 것이 훨씬 쉽다고 생각한다. 하지만 어떤 이유에서든 게시물로하고 자바 스크립트를 사용하고 싶다면 이것을 시도하십시오.

웹 양식 : param1은 Javascript를 사용하여 값을 설정할 숨겨진 필드입니다. 양식이 제출되면 양식과 함께 숨겨진 필드가 게시됩니다. 뒤에

<form id="FormServer" runat="server" > 
    <input type="text" id="param1" name="param1" style="display:none;" /> 
    <div> 
     <asp:HyperLink 
     ID="Link" 
     runat="server" 
     Visible="true" 
     NavigateUrl="javascript:document.getElementById('param1').value = 'test';document.forms['FormServer'].submit();" 
     >Test!!</asp:HyperLink> 
    </div> 
</form> 

코드 : 뒤에 코드에서

protected void Page_Load(object sender, EventArgs e) 
{ 
    string param1Value = Request["param1"]; 
    if (param1Value == "test") 
     Response.Redirect("~/Default.aspx"); 
    else if(param1Value == "lost") 
     Response.Redirect("http://www.google.com"); 
} 

는 this.IsPostBack을 확인하는 것이 유용 할 수 있습니다. 그러면 페이지가로드되는 이유가 표시됩니다. 링크가 클릭 되었기 때문에 IsPostBack이 참일 것입니다.

+0

깔끔한 것 같습니다. 한 가지 문제가 있습니다. 문제 : ASP.net은 이미 master.page에 양식이 있으며 child.page에서 두 번째 양식을 허용하지 않습니다./ – Soulrox

+0

Master.Site-Form을 제공하여이 문제를 해결했습니다. 이제 "FormServer"라는 ID가 작동합니다. – Soulrox

관련 문제