我有一个asp.net页面,我正在尝试添加一些隐藏的HTML输入控件。我将把这个表单提交到另一个站点(PP),所以我需要控件的名称在渲染时不要改变。有没有办法让ASP.NET尊重我在代码隐藏中设置的name属性?
作为替代方案,我不需要动态创建这些控件,我也可以将值分配给现有的HTML字段,但我不知道如何使用ASP.NET / C#
答案 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”)。宾果!