2012-01-31 34 views
1

我知道我可以消除ASP.NET 4.0中的ID修改,但是我也可以消除名稱修改嗎?這看起來像我能做的最好的:是否有可能消除ASP.NET中的名稱損壞?

<input name="ctl00$body$txtName" type="text" id="txtName" /> 

這是正確的嗎?

+1

你這樣做的理由是什麼? – 2012-02-01 00:01:43

+0

名稱屬性只與FORM有關(默認情況下,除非您重新使用它),並且它不必是唯一的 - 甚至不在一個FORM標籤中。所以,我沒有看到你甚至想要這個的原因。但是,你甚至認爲「搗亂」是什麼意思?確保它是獨一無二的?您始終可以使用GUID或類似的東西。 – 2012-02-01 00:04:00

+0

我在這個頁面上使用的前端人物說,這是我們的網站標準,「名稱」是他如何引用控件(我認爲是jQuery)。所以,我只是在研究它,所以我可以給他一個關於是否可能的明確答案。如果這是我能做的最好的,我會把這個答案給他,我們會找出一種處理事情的替代方法。 – birdus 2012-02-01 00:04:33

回答

2

ASP.NET依靠名稱綁定來將發佈的表單數據路由到嵌套命名容器中的輸入控件。避免名稱重疊的方法如下:

  1. 請勿使用嵌套命名容器,如母版頁或用戶控件。直接放在.aspx頁面上的輸入控件將具有簡單的名稱。
  2. 不要使用標準ASP.NET輸入控件。您可以:
    • <input type="text" name="name" />(不含runat="server")放入.ascx/.aspx中,並通過Request.Form["name"]訪問其值。
    • 創建一個自定義的服務器控件。
0

好了,所以這裏的交易。我需要動態更改表單元素的值(服務器端),我需要保留MasterPage,並且在頁面上也有面板。沒有其他辦法了。

我所代替完成,是使用服務器端的 「黃色標籤」,和公共變量:

HTML:

<input type='hidden' name='x_login' id='x_login' value="<%= x_login %>" /> 

代碼:

Public x_login As String = "some value" 

並訪問值回傳後:

Request.Form("x_login") 

感謝Michael Liu在最後一刻的回答。我爲此正確回答了他的答案。

相關問題