【问题标题】:Getting values from the source page using "PreviousPage"使用“PreviousPage”从源页面获取值
【发布时间】:2014-02-27 08:32:18
【问题描述】:

我尝试使用 PreviousPage 技术在 2 个 Web 表单之间发布值。
我已经关注了关于 PreviousPage 的 MSDN 文章 (http://msdn.microsoft.com/en-us/library/ms178139.aspx),并且我也参考了这篇文章 (http://www.deliciousdotnet.com/2011/03/getting-values-from-source-page-using.html#.Uw7jCvmSz3Q)。一切似乎都井井有条,但我在目标页面中看到关于我的公共方法的以下“System.Web.UI.Page 的未知成员'指定'”。

我做错了什么??请帮忙。谢谢。

这是我的源页面html代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="adduser.aspx.cs" Inherits="adduser" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <link href="../Styles/main_style.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
    </style>
</head>
<body style="min-height: 600px; background-image: none !important;">
    <form id="form1" runat="server">
    <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
    <div class="lightboxContainer">
        <div class="lightboxContainerSection">
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <table cellpadding="5" width="600px" class="style1" style="font-size: 12px; margin: 5px;
                        font-weight: bold;">
                        <tr>
                            <td>
                                Find User
                            </td>
                            <td>
                                <telerik:RadTextBox ID="RadTextBox1" runat="server" ValidationGroup="textbox1" OnTextChanged="TextBox1_TextChanged">
                                </telerik:RadTextBox>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="RadTextBox1"
                                    ErrorMessage="*" Style="color: #FF0000" ValidationGroup="textbox1"></asp:RequiredFieldValidator>
                            </td>
                            <td>
                                <telerik:RadButton ID="RadButton1" runat="server" Text="Find User" OnClick="RadButton1_Click"
                                    ValidationGroup="textbox1">
                                </telerik:RadButton>
                            </td>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td colspan="4">
                                <telerik:RadGrid ID="RadGrid_User" runat="server" OnNeedDataSource="RadGrid_User_NeedDataSource"
                                    OnSelectedIndexChanged="RadGrid_User_SelectedIndexChanged" AllowPaging="True"
                                    CellSpacing="0" GridLines="None">
                                    <ClientSettings EnablePostBackOnRowClick="True">
                                        <Selecting AllowRowSelect="True" />
                                    </ClientSettings>
                                </telerik:RadGrid>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td>
                                User name
                            </td>
                            <td>
                                <asp:Label ID="LabelUser" runat="server" Text="Label"></asp:Label>
                            </td>
                            <td>
                                Company
                            </td>
                            <td>
                                <asp:Label ID="LabelCompany" runat="server" Text="Label"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Designation
                            </td>
                            <td>
                                <asp:Label ID="LabelDesignation" runat="server" Text="Label"></asp:Label>
                            </td>
                            <td>
                                Department
                            </td>
                            <td>
                                <asp:Label ID="LabelDepartment" runat="server" Text="Label"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Mobile
                            </td>
                            <td>
                                <asp:Label ID="LabelMobile" runat="server" Text="Label"></asp:Label>
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                        <tr>
                            <td colspan="4">
                                <asp:Label ID="LabelConfirmation" runat="server" Text="Label"></asp:Label>
                            </td>
                        </tr>
                        <tr>
                            <td>
                                <telerik:RadButton ID="RadButton2" runat="server" onclick="RadButton2_Click" 
                                    Text="Yes">
                                </telerik:RadButton>
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                &nbsp;
                            </td>
                        </tr>
                    </table>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        <hr />
    </div>
    </form>
</body>
</html>

这是我的源页面代码隐藏文件

using System;
using System.Linq;
using Telerik.Web.UI;

public partial class adduser : System.Web.UI.Page
{
    private ActiveDirectory ad = new ActiveDirectory();
    private DatabaseConnect db = new DatabaseConnect();

    public void RadGrid_User_SelectedIndexChanged(object sender, EventArgs e)
    {
        GridDataItem selectedItem = (GridDataItem)RadGrid_User.SelectedItems[0];
        string user = selectedItem["Email"].Text;

        Session["userID"] = user.Split('@')[0];

        RadTextBox1.Text = (string)Session["userID"];

        string detail = ad.GetUserDetails(RadTextBox1.Text.Trim());
        string[] details = detail.Split('/');

        LabelUser.Text = details[0];
        LabelCompany.Text = details[1];
        LabelDepartment.Text = details[3];
        LabelDesignation.Text = details[4];
        LabelMobile.Text = details[5];

        LabelConfirmation.Text = "Do you want to grant "+details[0]+" permission to access the CRI ?";

        LabelUser.Visible = true;
        LabelCompany.Visible = true;
        LabelDepartment.Visible = true;
        LabelDesignation.Visible = true;
        LabelMobile.Visible = true;
        LabelConfirmation.Visible = true;
        RadButton2.Visible = true;
    }

    public void RadGrid_User_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        string username = this.RadTextBox1.Text.Trim();
        if (username.Length >= 1)
        {
            this.RadGrid_User.DataSource = this.ad.GetUserDetails_WildCard(this.RadTextBox1.Text.Trim());
        }
        else
        {
            this.RadGrid_User.Visible = false;
        }
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (this.db.IsAllowedAdministrator(this.User.Identity.Name))
        {
            if (!this.IsPostBack)
            {
                LabelCompany.Visible = false;
                LabelDepartment.Visible = false;
                LabelDesignation.Visible = false;
                LabelMobile.Visible = false;
                LabelUser.Visible = false;
                LabelConfirmation.Visible = false;
                RadButton2.Visible = false;
            }
        }
        else
        {
            this.Response.Redirect("~/ZCRI_RestrictedAdmin.aspx");
        }
    }

    protected void RadButton1_Click(object sender, EventArgs e)
    {
        this.RadGrid_User.Rebind();
        this.RadGrid_User.Visible = true;
    }
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        LabelCompany.Visible = false;
        LabelDepartment.Visible = false;
        LabelDesignation.Visible = false;
        LabelMobile.Visible = false;
        LabelUser.Visible = false;
        LabelConfirmation.Visible = false;
        RadButton2.Visible = false;
    }

    public string Designation
    {
        get
        {
            return LabelDesignation.Text;
        }
    }

    public string Mobile
    {
        get
        {
            return LabelMobile.Text;
        }
    }

    public string Company
    {
        get
        {
            return LabelCompany.Text;
        }
    }

    public string Department
    {
        get
        {
            return LabelDepartment.Text;
        }
    }
    protected void RadButton2_Click(object sender, EventArgs e)
    {
        Response.Redirect(@"~/AdminInterfaces\adduserpermission.aspx");
    }
}

这是我的目标页面

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="adduserpermission.aspx.cs"
    Inherits="adduserpermission" %>
<%@ PreviousPageType VirtualPath="~/AdminInterfaces/adduser.aspx" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <link href="../Styles/main_style.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
        .style1
        {
            width: 100%;
        }
    </style>
</head>
<body style="min-height: 600px; background-image: none !important;">
    <form id="form1" runat="server">
    <telerik:RadScriptManager runat="server" ID="RadScriptManager1" />
    <div class="lightboxContainer">
        <div class="lightboxContainerSection">
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><asp:Label ID="Label2"
                runat="server" Text="Label"></asp:Label><asp:Label ID="Label3"
                runat="server" Text="Label"></asp:Label><asp:Label ID="Label4"
                runat="server" Text="Label"></asp:Label>
        </div>
    </div>
    </form>
</body>
</html>

我的目标页面代码隐藏文件

using System;
using System.Linq;

public partial class adduserpermission : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = PreviousPage.Designation;
        Label2.Text = PreviousPage.Department;
        Label3.Text = PreviousPage.Company;
        Label4.Text = PreviousPage.Mobile;

    }
}

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    现在这将起作用,因为我将标签与您的属性混淆了。

    在上一页上,您有一个名称为 LabelDesignation 的标签,但在这里您使用了错误的名称来访问它。尝试使用它。

    您在文件后面的源页面代码中遇到此代码问题

    this.Response.Redirect("~/ZCRI_RestrictedAdmin.aspx");
    

    PreviousPage 属性返回使用 Server.Transfer 将控制权发送到此页面的页面。

    如果当前页面是由于直接请求(不是来自另一个页面的传输或交叉发布)而呈现的,则 PreviousPage 属性包含 null。

        else
        {
            this.Server.Transfer("~/ZCRI_RestrictedAdmin.aspx");
        }
    
    
    
    using System;
    using System.Linq;
    
    public partial class adduserpermission : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
       {
           if (Page.PreviousPage != null)
           {
             if(Page.PreviousPage.IsCrossPagePostBack == true)
             {
                Label1.Text = PreviousPage.Designation;
                Label2.Text = PreviousPage.Department;
                Label3.Text = PreviousPage.Company;
                Label4.Text = PreviousPage.Mobile;
             }
          }
       }
    }
    

    【讨论】:

      【解决方案2】:

      您需要将其转换为正确的类型:

      public partial class adduserpermission : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
              adduser prevPage = PreviousPage as adduser;
              if (prevPage != null)
              {
                  Label1.Text = prevPage.Designation;
                  Label2.Text = prevPage.Department;
                  Label3.Text = prevPage.Company;
                  Label4.Text = prevPage.Mobile;
              }
          }
      }
      

      【讨论】:

      • 顺便说一句,尝试在类名上使用正确的命名约定 :)
      • 其他一切正常,但他/她在目标页面中使用了错误的变量名。
      • 她尝试使用这些名称访问属性(这些名称确实存在于 adduser 页面中)。我的代码显示了如何。
      • 在上一页中,她只有名称、部门、公司、手机作为不可访问的列中的文本。查看您在上面发布的代码,她正在访问 Mobile 并将其分配给 Label4,这意味着她正在从上一页访问标签。
      • @Lev 我尝试了你的建议,它给了我这个错误......错误'adduser'不包含'Designation'的定义并且没有扩展方法'Designation'接受类型的第一个参数可以找到“adduser”(您是否缺少 using 指令或程序集引用?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多