2016-07-07 104 views
1

我對ASP.Net相當陌生,我被卡住了。 如果我的超鏈接被點擊,應該將一個Command.Value發送到服務器。得到該Command.Value後,後面的代碼應該檢查它是否正確,並重定向到特定的站點,否則只是重新加載頁面。 這裏是我的超級鏈接:通過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」]。submit();但document.FormServer.Command.value是我不知道的。你可以發佈你的asp.net表單嗎? – derloopkat

回答

2

我相信通過GET在鏈接的url中發送參數要容易得多。但是,如果出於任何原因,你想通過郵政和使用JavaScript做到這一點,然後試試這個。

網頁形式: 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

看起來很整齊,只有一個問題:ASP.net在master.page中已經有了一個表單,並且不允許第二個表單在child.page中:/ – Soulrox

+0

通過給出Master.Site-Form ID「FormServer」現在可以工作。 – Soulrox