我只想问是否有可能改变:
<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'属性。
答案 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;
}