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