HTML/ASP.NET: <input type="hidden" name="reference" value="ABC"/>

新手上路,请多包涵

我只想问是否有可能改变:

 <input type="hidden" name="reference" value="ABC"/>

进入这个:

 <input type="hidden" name="reference" value="any values I want"/>

我可以在 .cs/C# 后面设置任何值 - 动态设置。我正在使用的支付网关需要,但我找不到包含 ASP.NET 控件(?)的方法,我需要你的建议/评论。谢谢。

附言。 <asp:HiddenField ID="reference" runat="server" Value="ABC" /> 不起作用,因为支付网关特别需要“名称”属性。

原文由 abramlimpin 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 514
2 个回答

我知道这是一篇旧帖子,但对于现在希望解决此问题的任何人 - 如果您将 runat="server" 添加到输入中,名称将被更改(例如 MainContentArea_ctl00_ctl01_ctl01_amount )。 ClientIdMode="Static" 只会对 ID 有帮助。要解决这个问题:

在您的 html 页面中使用 Literal :

     <asp:Literal runat="server" ID="litInputAmount"></asp:Literal>

在代码隐藏文件中,将字符串分配给 Literal 的 Text 属性。此字符串应该是您希望的 html。还可以为 value 字段添加正确的值:

     litInputAmount.Text = String.Concat("<input id='inputAmount' type='hidden' name='amount' value='", Price.ToString(), "'>");

这将被编译为:

     <input id="inputAmount" type="hidden" value="224.4" name="amount">

这会将信息以正确的名称提供给支付网关,但您的价值可以动态管理。重复发送之前需要添加的任何其他值。

原文由 Samantha 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以将 runat="server" 放在控件上以从后面的代码访问它:

 <input type="hidden" name="reference" id="reference" runat="server" />

然后,在你后面的代码中:

 void Page_Load(object sender, EventArgs e)
{
    // ...

    reference.Attriutes["value"] = "any values I want";

    // ...
}

请注意,在这种情况下,“id”属性是必需的,因为当您拥有 runat="server" 时,id 属性用于指定生成变量的名称。

原文由 Dean Harding 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题