如何从自动生成ID停止asp.net?

时间:2013-10-16 19:21:14

标签: asp.net .net webforms

我有一个包含多个表单元素的asp.net页面。

<input type="hidden" id="myID" runat="server"/>

我在服务器级别运行这些,因为我需要为它们分配值。

Asp.net引擎会自动分配ID和名称,覆盖我指定的ID。

出于我的申请的目的,我必须在这些字段上有特定的ID。由于这是.Net&lt; 4的旧版本,因此无法使用ClientIDMode = Static值。

无论如何我可以强制使用静态ID吗?

1 个答案:

答案 0 :(得分:3)

分配静态值的能力是.net 4.0版的新功能,但您可以获取分配给控件的值并将其传递给其他JavaScript。

使用您想要的IDsNames创建自己的隐藏控件。在表单提交上使用一些简单的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>块中定义的函数。