如何在下一页中获取内容占位符隐藏字段值

时间:2017-03-22 02:25:50

标签: c# asp.net webforms hidden-field form-post

我有两个aspx页,bottle.aspxcap.aspx

bottle.aspx填写表单后,我应该可以将该表单提交给cap.aspx,这样可以正常使用。但是在bottle.aspx页面中我有hidden fields我在hidden fields函数中为这些JavaScript分配值。现在,当我尝试使用hidden field获取cap.aspx.cs文件中的Request.Form["HiddenfiledId"]值时,我得到null值。

Bottle.aspx代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/Meb.Master" AutoEventWireup="true" CodeBehind="bottle.aspx.cs" Inherits="xxxx" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MHead" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="NavBarContent" runat="server">
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="Breadcrumbs" runat="server">
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="MiddleColumnContent" runat="server">
    <style>
        .vTop {
            vertical-align: top !important;
        }

        .rd1 {
            margin: 1px 0px 0 6px;
        }

        .auto-style2 {
            margin-right: 294px;
        }
    </style>
    <script type="text/javascript">
        function SelectSingleRadiobutton(rdbtnid,checked) {
            var rdBtn = document.getElementById(rdbtnid);

            var rdBtnList = document.getElementsByTagName("input");
            for (i = 0; i < rdBtnList.length; i++) {
                if (rdBtnList[i].type == "radio" && rdBtnList[i].id != rdBtn.id) {
                    rdBtnList[i].checked = false;
                }
            }
            if (checked == false) {
                document.getElementById("rbNewMessage").checked = false;
            }
            var hdnfldVariable = document.getElementById("hdnfldVariable")
            hdnfldVariable.value = rdbtnid;
        }
    </script>
    <form runat="server" method="post" action="Cap.aspx">
        <asp:gridview id="gvStatusMessages">
            <Columns>  
                <asp:TemplateField ItemStyle-CssClass="vTop rd1">
                    <ItemTemplate>
                        <asp:RadioButton ID="rbSelectStatus" OnClick="javascript:SelectSingleRadiobutton(this.id,false)" />
                        <asp:HiddenField ID="hdnfldVariable" runat="server" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:gridView>
        <asp:Button runat="server" Text="Submit Message" ID="btnSubmit" CssClass="bluelink" OnClientClick="f1(this)" />
        <asp:HiddenField ID="hdfButtonClciked" runat="server" />
    </form>
</asp:Content>

现在在cap.aspx.cs文件中我想要获取hidden field值。

 string btnClicked = Request.Form["hdfButtonClciked"];
 string msNum = Request.Form["hdnfldVariable"]

但它返回null值。

任何想法?

1 个答案:

答案 0 :(得分:0)

尝试

<强> Approach1

HiddenField btnClicked = ((HiddenField)Page.PreviousPage.FindControl("hdfButtonClciked")).Value;
HiddenField msNum = ((HiddenField)Page.PreviousPage.FindControl("hdnfldVariable")).Value;

或者

Approach2

使用Session代替HiddenField

注意:第一种方法很可能会生成NullReferenceException,请小心处理它。