0

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

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

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

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

为了我的应用程序的目的,我必须在这些字段上有特定的 ID。由于这是 .Net <4 的旧版本,我不能使用 ClientIDMode=Static 值。

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

4

1 回答 1

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>块中定义的函数。

于 2013-10-16T20:25:59.967 回答