2010-08-30 39 views
0

我有一個asp.net頁面,我試圖添加一對隱藏的HTML輸入控件。我將提交此表單到另一個網站(PP),因此我需要控件的名稱在呈現時不會更改。有沒有辦法讓ASP.NET遵守我在代碼隱藏中設置的名稱屬性?ASP.NET HtmlInputHidden控件 - 停止更改名稱?

作爲備用,我並不需要動態創建這些控件,我也可以只值分配給現有的HTML字段,但我不知道該怎麼做,與ASP.NET/C#

+1

你使用的是什麼版本的asp.net?如果你使用的是.NET 4,它會讓事情變得更簡單。 http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net- 4-0-series.aspx – Charlino 2010-08-30 21:32:38

+0

使用ASP.NET 3.5的Im – 2010-08-30 21:41:09

回答

2

您使用的是ASP.NET 4.0嗎?您可以在控件上使用ClientIDMode,其值爲static,並且ID不會更改。

否則,您可以使用文字輸出元素本身或只是它的值。 在你頁面上你必須:

<input type="hidden" id="ppID" value='<asp:Literal ID="ppIDValue" runat="server" />' /> 

<input type="hidden" id="ppID" value="<%= ppIDValue %>" /> 

而且在後面的代碼或其它地方:

this.ppIDValue.Text = "value for ppID"; 

或(略):

public class MyPage : Page 
{ 
    public string ppIDValue = "0"; 
    override OnLoad() 
    { this.ppIDValue = "100"; } 
} 
+0

使用ASP.NET 3.5的Im。你能給一個文字輸出的例子嗎? – 2010-08-30 21:41:38

+0

謝謝!正是我需要的 – 2010-08-30 21:56:36

0

pu問題在HTML標籤內部使用文字是文字很可能會在某個煩人的時間點被從設計器代碼隱藏文件中移除。儘管你可以手動添加它們,但是在大多數情況下,這會使基於GUI的編輯器和設計器代碼隱藏之間的映射搞砸。

此外,如果您使用母版頁,它們將無意中更改隱藏字段上的name-attribute值。

我一直在尋找最好的方法來做到這一點,並且正準備編寫我自己的自定義控件,所以我可以保留name屬性的值。然後我遇到了this answer類似的問題,其中提到Page.ClientScript.RegisterHiddenField(「ppID」,「1234」)。答對了!