我有一个包含多个表单元素的asp.net页面。
<input type="hidden" id="myID" runat="server"/>
我在服务器级别运行这些,因为我需要为它们分配值。
Asp.net引擎会自动分配ID和名称,覆盖我指定的ID。
出于我的申请的目的,我必须在这些字段上有特定的ID。由于这是.Net&lt; 4的旧版本,因此无法使用ClientIDMode = Static值。
无论如何我可以强制使用静态ID吗?
答案 0 :(得分:3)
分配静态值的能力是.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>
块中定义的函数。