【问题标题】:How can get the content place holder hidden field values in the next page下一页如何获取内容占位符隐藏字段值
【发布时间】:2017-03-22 02:25:50
【问题描述】:

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

一旦我在bottle.aspx 中填写了表格,我应该能够将该表格提交给cap.aspx,这工作正常。但是在bottle.aspx 页面中,我有hidden fields 将值分配给来自JavaScript 函数的hidden fields。现在,当我尝试使用Request.Form["HiddenfiledId"] 获取cap.aspx.cs 文件中的hidden field 值时,我得到的是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 值。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    试试

    方法1

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

    或者

    方法2

    使用Session 而不是HiddenField

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

    【讨论】:

    • 是否需要使用server.transfer?对。 @Imad
    • @Rajan 你的选择
    • 我尝试在我的 cap.aspx.cs 中使用第一个方法,它说 .Value can't be used etc etc.所以我给了 HiddenField btnClicked = (HiddenField)Page.PreviousPage.FindControl("hdfButtonClciked");但我仍然得到空值,尽管我已经从 bottle.aspx 中发布了值。
    • 当我使用 (HiddenField)Page.PreviousPage.FindControl("hdfButtonClciked‌​").Value 时,它​​会给出一个错误,提示控件不包含“值”的定义..等。
    • 我不应该使用会话这是一个架构师级别的决定。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2019-10-07
    相关资源
    最近更新 更多