2016-11-15 79 views
0

的ASP.NET中繼導致在客戶端下面的HTML代碼:多提交ASP.NET中的WebForms按鈕沒有JavaScript

<form name="sourceForm" method="post" action="sources.aspx" id="sourceForm"> 
    <table> 
     <tr> 
     <td>Best Buy</td> 
     <td><input type="submit" value="Receive data" name="RecData1110" /></td> 
     </tr> 
     <tr> 
     <td>Walmart</td> 
     <td><input type="submit" value="Receive data" name="RecData1085" /></td> 
     </tr> 
     <tr> 
     <td>Seven Eleven</td> 
     <td><input type="submit" value="Receive data" name="RecData1125" /></td> 
     </tr> 
    </table> 
</form> 

每個按鈕的name屬性動態地從文本前綴和記錄ID生成從數據庫。

如何獲取信息哪個按鈕已發佈表格而不涉及JavaScript? (我知道如何用JavaScript做到這一點)。它應該用POST請求完成。

通常我得到的控制值的方式如下:

Request.Form["ControlName"] 

但在這種情況下,我沒有任何想法如何確定誰發佈的形式。

完全可以用純HTML和ASP.NET來實現嗎?

回答

0

好吧,似乎枚舉應該參與:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (IsPostBack) 
    { 
     int? id = null; 
     foreach (string item in Request.Form.AllKeys) 
      if (item.StartsWith("RecData")) 
       id = int.Parse(item.Replace("RecData", "")); 
    } 
} 
0

創建擴展的.html平面文件,並在瀏覽器中打開它。使用此代碼:

<HTML> 
<FORM> 
<INPUT Type="Submit" ID="Button1" Name="Button1_Was_Pressed" Value="Click Me"> 
<INPUT Type="Submit" ID="Button2" Name="Button2_Was_Pressed" Value="Click Me"> 
</FORM> 
</HTML> 

當您在瀏覽器中打開它時,您應該看到兩個帶有「Click Me」標題的按鈕。所以按鈕看起來與最終用戶完全相同。但是,如果您單擊button,你會得到的

?Button1_Was_Pressed=Click+Me 

查詢字符串,如果你點擊按鈕2,你會得到的

?Button2_Was_Pressed=Click+Me 

鑑於此行爲的查詢字符串,你應該能夠修改中繼器代碼以爲每行發出唯一的Name屬性,並且在提交表單時,服務器可以在Request.QueryString集合中查找名稱。

if (Request.QueryString["Button1_Was_Pressed"] != null) HandleButton1Click(); 

當然它也適用於POST。

<HTML> 
<FORM method="POST"> 
<INPUT Type="Submit" ID="Button1" Name="Button1_Was_Pressed" Value="Click Me"> 
<INPUT Type="Submit" ID="Button2" Name="Button2_Was_Pressed" Value="Click Me"> 
</FORM> 
</HTML> 

if (Request.Form["Button1_Was_Pressed"] != null) HandleButton1Click(); 

如果你有一噸的按鈕,就可以通過他們的循環:

for (int i=0; i < buttonCount; i++) 
{ 
    string buttonName = String.Format("Button{0}_Was_Pressed", i); 
    if (Request.Form[buttonName] != null) HandleButtonClick(i); 
} 

或者你可以枚舉值(使用Allkeys)就像你有在你自己的答案中完成。