我正在尝试与支付网关集成.他们需要将一组隐藏的输入框发布到他们的网关,如:
<input id="orderref" name="orderref" type="hidden" runat="server"/>
Run Code Online (Sandbox Code Playgroud)
我添加了runat ="server",因此我可以使用值动态填充框.
但是,当然在运行时输入框名称将更改为:
<input name="ctl00$ContentPlaceHolder1$orderref" type="hidden" id="ContentPlaceHolder1_orderref" value="9" />
Run Code Online (Sandbox Code Playgroud)
我在捕获22.如果我删除runat ="server"关于名称一切都很好,但我不能用值填充输入框!有没有办法强制该字段的名称保持不变?
根据您使用的.NET版本,对此的控制有所不同:基本上,在.NET4之前,您只能通过实现自己的容器前缀来更改容器前缀,但是从 .NET4中可以省略使用的容器前缀ClientIDMode.
或者,您可以在页面或母版页上公开方法,然后使用<%=MyMethodReturningValue() %>在渲染时评估的内联脚本()来调用它们.
编辑:
为了详细说明我的第二个建议,您可以在页面代码隐藏中定义一个方法,该方法可以通过使用嵌入式代码块以内联方式执行; 引用的链接提供了这方面的简单示例,但这些方法不需要<script>在页面本身的块中(如我之前所述),以便您可以将逻辑分开,例如:
在页面的代码隐藏中定义方法:
public string RenderMessage()
{
return "This need not be a hard-coded string!";
}
Run Code Online (Sandbox Code Playgroud)
写出你的input元素,省略runat属性,并添加嵌入的代码块代替值的位置(将其视为占位符); 这个代码块将在预渲染时调用指定的方法,并且基本上由返回值替换:
<input id="orderref" name="orderref" type="hidden" value='<%=RenderMessage() %>'/>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3054 次 |
| 最近记录: |