使用母版页时,在ASP .Net隐藏字段中发布值

时间:2014-07-02 16:32:02

标签: c# asp.net master-pages

在我的ASP .Net Form应用程序中,我需要使用hiddenfields发布一些数据。

  1. 需要在文件背后的代码中动态设置值
  2. 必须在使用母版页的网络表单中使用隐藏文件。
  3. 我必须添加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发布值,那将非常感激。感谢...

2 个答案:

答案 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是该网页课程的publicprotected班级成员。像这样:

protected string SomePageMember { get; set; }

这将允许UI页面(继承自代码隐藏类)直接在标记中注入该值,同时仍然可以对标记本身进行精细控制。