【问题标题】:ASP.NET HtmlInputHidden control - stop name from changing?ASP.NET HtmlInputHidden 控件 - 停止更改名称?
【发布时间】:2013-06-26 02:40:52
【问题描述】:

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

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

【问题讨论】:

标签: c# asp.net


【解决方案1】:

您使用的是 ASP.NET 4.0 吗?可以在控件上使用ClientIDMode,值为static,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"; }
}

【讨论】:

  • 我正在使用 ASP.NET 3.5。你能举一个文字输出的例子吗?
  • 谢谢!正是我需要的
  • 我很困惑 - 问题提到名称没有改变,但这个答案解决了 ID - 输入元素上的两个不同的东西。
【解决方案2】:

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

此外,如果您使用母版页,它们无论如何都会更改隐藏字段上名称属性的值。

我自己一直在寻找最好的方法来做到这一点,并且正要编写自己的自定义控件,所以我可以保留名称属性的值。然后我遇到了this answer 一个类似的问题,其中提到了 Page.ClientScript.RegisterHiddenField("ppID", "1234") 。宾果游戏!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多