我有一個有幾個表單元素的asp.net頁面。如何停止自動生成id的asp.net?
<input type="hidden" id="myID" runat="server"/>
我在服務器級別運行這些,因爲我需要爲它們分配值。
Asp.net引擎自動分配ID和名稱,覆蓋我指定的ID。
爲了我的應用程序的目的,我必須在這些領域有特定的ID。由於這是舊版本的.Net < 4我無法使用ClientIDMode =靜態值。
有無論如何,我可以強制靜態ID?
我有一個有幾個表單元素的asp.net頁面。如何停止自動生成id的asp.net?
<input type="hidden" id="myID" runat="server"/>
我在服務器級別運行這些,因爲我需要爲它們分配值。
Asp.net引擎自動分配ID和名稱,覆蓋我指定的ID。
爲了我的應用程序的目的,我必須在這些領域有特定的ID。由於這是舊版本的.Net < 4我無法使用ClientIDMode =靜態值。
有無論如何,我可以強制靜態ID?
分配靜態值的能力是.net 4.0版的新功能,但您可以獲取賦給控件的值並將其傳遞給JavaScript的其他位。
用你想要的IDs
和Names
創建你自己的隱藏控件。在表單提交中使用一些簡單的JavaScript來將服務器端控件的值複製到控件中。
<form id="MyForm">
<asp:TextBox ID=MyTextBox" runat="server" />
<input type="hidden" id="MyFixedID" name="MyFixedName" />
<asp:Button ID="MyButton" runat="server" Text="Go!" />
</form>
function fred() {
$("#<%=MyButton.ClientID %>").Click(function() {
$("#MyFixedID").val($("#<%=MyTextBox.ClientID %>").val());
$("#MyForm").submit()
});
}
我也用ScriptManager.RegisterStartupScript()
或ScriptManager.RegisterClientScriptBlock()
發射JavaScript和通過服務器側Control.ClientID
作爲參數傳遞給一個<script>
塊內定義的函數。
出於某種原因,讓我大笑的是,你將這個任意JavaScript函數命名爲「fred」。 – jadarnel27
基於20年前導師的長期命名慣例。任何名爲'「fred」'(文件,目錄,代碼等)都是暫時的,如果需要空間的話可以隨意刪除。我很少讓我使用「弗雷德」溢出到SO上。無意冒犯這個世界的弗雷德。 – andleer
它不會將值傳遞給javascript或jquery函數。這非常簡單。表單本身會發布到需要明確命名的第三方頁面。 –
否;該功能是ASP.Net 4.0的新功能。 – SLaks
「爲了我的申請,我必須有特定的ID」,你能解釋一下這個要求嗎? – MikeSmithDev
[在ASP.NET 3.5中使用ASP.NET 4功能「ClientIDMode」]的可能重複(http://stackoverflow.com/questions/9060905/use-asp-net-4-feature-clientidmode-in-asp-net -3-5) – MikeSmithDev