PreviousPage指令出错

时间:2016-04-22 18:27:53

标签: c# asp.net

我正在使用Webforms,C#,Vs 2013

我尝试使用PreviousPage访问另一个Form表单。

所以我将以下内容添加到第二页:

<%@ PreviousPageType VirtualPath="~/Survey.aspx" %>

我添加此代码后,会自动生成以下代码:

  public new HousingSurvey.HousingSurvey PreviousPage {
            get {
                return ((HousingSurvey.HousingSurvey)(base.PreviousPage));
            }
        }

我得到了

Error   31  The type name 'HousingSurvey' does not exist in the type 'HousingSurvey.HousingSurvey'

HousingSurvey类在Survey.aspx中定义

<%@ Page EnableEventValidation="false" MaintainScrollPositionOnPostback="true" Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Survey.aspx.cs" Inherits="HousingSurvey.HousingSurvey" %>

1 个答案:

答案 0 :(得分:0)

生成的方法可以正常工作,因为前一页确实属于所述类型。

如果上一页可以属于另一种类型,则需要单独保留生成的方法,并使用自己的方法或属性进行健全性检查。这涵盖了上一页不是预期页面的情况。我有这种情况,例如,当用户在目标页面上更改语言时。

这是我的代码(在Target.aspx.cs中):

/// <summary>
///     Gets the previous page, if it was an instance of the "MyPrevious.aspx" page.
/// </summary>
/// <remarks>This access is used for the access to data from the "MyPrevious.aspx" page.</remarks>
/// <value>
///     The previous page, if it was an instance of the "MyPrevious.aspx" page, null otherwise.
/// </value>
private MyPrevious CheckedPreviousPage {
    get {
        if (base.PreviousPage != null) {
            if (base.PreviousPage is MyPrevious) {
                return PreviousPage;
            }
        }
        return null;
    }
}

以下是如何使用该属性(在Target.aspx.cs中):

if ((CheckedPreviousPage != null) && (CheckedPreviousPage.IsCrossPagePostBack)) {
    //Cross page post, populating fields
    MyTextBox.Text = CheckedPreviousPage.SomeTextBox.Text;
}

此代码显式使用base.PreviousPage getter属性和自定义检查,避免使用生成的方法。