我有一个有几个表单元素的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