在我的ASP .Net Form应用程序中,我需要使用hiddenfields发布一些数据。
我必须添加runat="server"
属性,以便访问代码隐藏文件中的字段以动态分配值......问题就出现了。
例如:
<input type="hidden" runat="server" id="uname" value="abc" />
在运行时由ASP .Net转换为以下
<input name="ctl00$content$uname" type="hidden" id="content_uname" value="abc" />
因此发布了不同的name="ctl00$content$uname"
字段。
我尝试添加ClientIDMode="Static"
,但在name
字段的运行时由ASP .Net创建了另一个不同的命名字段,如下所示
<asp:HiddenField ID="uname" runat="server" Value="abc" ClientIDMode="Static" />
通过asp .net
转换为以下内容<input type="hidden" name="ctl00$content$uname" id="uname" value="abc" />
如果有人可以通过在ASP .Net的母版页环境中的代码beghind中确定运行时的值来指导我如何使用hiddenfields发布值,那将非常感激。感谢...
答案 0 :(得分:1)
您可以通过服务器代码设置值,而不是用户runat="server"
<input type="hidden" runat="server" id="uname" name="uname" value="<%= HiddenValue %>" />
创建一个名为HiddenValue
的全局变量,并在页面加载时设置该值。
编辑:刚才意识到这和@Bartdude的建议相同。
答案 1 :(得分:1)
每当你使用runat="server"
时,你基本上都会让WebForms控制它,那么,#34; control&#34;。这意味着WebForms将决定生成的标记。由于您需要对标记进行精细控制,因此需要手动创建它:
<input type="hidden" name="uname" />
由于这只是纯HTML,因此WebForms呈现引擎不会对其进行修改。然后,要从服务器端代码为此值分配值,您需要使用内联服务器端语句:
<input type="hidden" name="uname" value="<%= SomePageMember %>" />
在这种情况下,SomePageMember
是该网页课程的public
或protected
班级成员。像这样:
protected string SomePageMember { get; set; }
这将允许UI页面(继承自代码隐藏类)直接在标记中注入该值,同时仍然可以对标记本身进行精细控制。