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

时间:2010-07-01 03:28:33

标签: asp.net html dynamic-data user-input payment-processing

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

<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" />无效,因为付款网关特别需要'name'属性。

4 个答案:

答案 0 :(得分:5)

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

在您的html页面中使用文字:

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

在代码隐藏文件中,为Literal的Text属性指定一个字符串。该字符串应该是您希望的html。也可以为值字段添加正确的值:

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

然后将编译为:

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

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

答案 1 :(得分: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属性用于指定生成变量的名称。

答案 2 :(得分:1)

您可以使用隐藏类型的标准输入,就像使用静态HTML或Razor一样,并依赖于<%=表达式,该表达式在渲染时评估,而不是DataBind()时间{ {1}}表达式会。

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

<asp:HiddenInput

当然,这种方法并非一刀切,但似乎最符合7年前描述的要求......

答案 3 :(得分: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; }