6

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

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

进入这个:

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

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

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

4

4 回答 4

8

我知道这是一篇旧帖子,但对于现在希望解决此问题的任何人 - 如果您添加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">

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

于 2014-01-14T13:44:50.157 回答
3

您可以将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 属性用于指定生成变量的名称。

于 2010-07-01T03:44:45.303 回答
1

您可以像使用静态 HTML 或 Razor 一样使用隐藏类型的标准输入,并依赖<%=表达式,该表达式在渲染时进行评估,而不是DataBind()<%#表达式那样按时进行评估。

这样,您可以拥有一个普通的 html,您可以让 ASP.NET WebFroms 为您的服务器端生成隐藏输入的值,而无需实际使用runat="server"或使用<asp:HiddenInput控件标记输入。请参阅下面的示例,它应该可以完成这项工作:

<input type="hidden" id="add-to-wishlist-url" value='<%= YourServerSideExpressionHere.Execute() %>' />

当然,这种方法并不是一刀切,但似乎最接近 7 年前描述的要求......

于 2018-06-08T11:52:27.743 回答
0

//<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> protected string GetVariableValue(string AspxPage, string inputTagName) { ra migirad string RegPattern = string.Format("(?<=({0}\".value.\")).*(?=\"./>)", inputTagName); Regex regex = new Regex(RegPattern, RegexOptions.IgnoreCase); Match match = regex.Match(AspxPage); if (string.IsNullOrEmpty(match.Value)) { RegPattern = string.Format("<input[^>]*{0}[^>]*value=\"([^\"]*)\"", inputTagName); regex = new Regex(RegPattern, RegexOptions.IgnoreCase); match = regex.Match(AspxPage); return match.Groups[1].Value; } return match.Value; }

于 2016-05-10T07:23:35.423 回答