2016-07-07 12 views
1

私はかなりASP.Netに新しく、止まっています。 ハイパーリンクをクリックすると、Command.Valueをサーバーに送信する必要があります。そのCommand.Valueを取得した後、コードが正しいかどうかをチェックして、特定のサイトにリダイレクトする必要があります。それ以外の場合は、ページをリロードしてください。私は私のハイパーリンクが正しいかどうか尋ねるしたいすべてのCommand.ValueをJavascript経由でコードビハインドに送信

<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でパラメータを送信する方がはるかに簡単だと思います。しかし何らかの理由で投稿してjavascriptを使用したい場合は、これを試してみてください。

Webフォーム: 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がtrueになります。

+0

これはきれいに見えますが、問題は1つだけです。問題:ASP.netはすでにmaster.pageにフォームを持っていて、child.pageの2番目のフォームを許可していません:/ – Soulrox

+0

Master.Site-Form id "FormServer"が動作するようになりました。 – Soulrox

関連する問題