ASP.NET HtmlInputHidden控件 - 停止更改名称?

时间:2010-08-30 21:27:18

标签: c# asp.net

我有一个asp.net页面,我正在尝试添加一些隐藏的HTML输入控件。我将把这个表单提交到另一个站点(PP),所以我需要控件的名称在渲染时不要改变。有没有办法让ASP.NET尊重我在代码隐藏中设置的name属性?

作为替代方案,我不需要动态创建这些控件,我也可以将值分配给现有的HTML字段,但我不知道如何使用ASP.NET / C#

2 个答案:

答案 0 :(得分:3)

您使用的是ASP.NET 4.0吗?您可以使用静态值在控件上使用ClientIDMode,并且ID不会更改。

否则,您可以使用文字输出元素本身或仅输出其值。 在你的页面上你有:

<input type="hidden" id="ppID" value='<asp:Literal ID="ppIDValue" runat="server" />' />

<input type="hidden" id="ppID" value="<%= ppIDValue %>" />

在后面或任何地方的代码中:

this.ppIDValue.Text = "value for ppID";

或(缩写):

public class MyPage : Page
{
    public string ppIDValue = "0";
    override OnLoad()
    { this.ppIDValue = "100"; }
}

答案 1 :(得分:0)

将文字置于HTML标记内的问题在于,在某些烦人的时间点,文字很可能会从设计器代码隐藏文件中删除。即使您可以手动添加它们,这在大多数情况下会搞砸基于GUI的编辑器和设计器代码隐藏之间的映射。

此外,如果您使用的是母版页,他们无论如何都会更改隐藏字段上name-attribute的值。

我一直在寻找最好的方法来做这件事,并且即将编写我自己的自定义控件,所以我可以保留name-attribute的值。然后我遇到了this answer类似的问题,其中提到了Page.ClientScript.RegisterHiddenField(“ppID”,“1234”)。宾果!