Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
asp.net/C#控件-存储上一页加载的值 控件(例如标签)在页面加载时更改值 页面加载前,标签值为“x” 继续加载页面此时x自然丢失,那么存储上一页的值的简单方法是什么呢 装载_C#_Asp.net - Fatal编程技术网

asp.net/C#控件-存储上一页加载的值 控件(例如标签)在页面加载时更改值 页面加载前,标签值为“x” 继续加载页面此时x自然丢失,那么存储上一页的值的简单方法是什么呢 装载

asp.net/C#控件-存储上一页加载的值 控件(例如标签)在页面加载时更改值 页面加载前,标签值为“x” 继续加载页面此时x自然丢失,那么存储上一页的值的简单方法是什么呢 装载,c#,asp.net,C#,Asp.net,如果没有任何代码示例,我不确定这是否是您的意思,但我从内存中知道,在ASP.NET中,您可以访问“上一页”属性,如下所示: Page lastPage = currentPage.PreviousPage 返回整个页面对象。假设您的标签定义如下: <asp:label id="myLabel" runat="server" /> 因此,请确保lastPageVal是一个静态变量,然后它也将在整个页面中持续存在。听起来您想要的是页面以前状态的历史记录,或者至少是一个以前的值。我可以

如果没有任何代码示例,我不确定这是否是您的意思,但我从内存中知道,在ASP.NET中,您可以访问“上一页”属性,如下所示:

Page lastPage = currentPage.PreviousPage
返回整个页面对象。假设您的标签定义如下:

<asp:label id="myLabel" runat="server" />

因此,请确保lastPageVal是一个静态变量,然后它也将在整个页面中持续存在。

听起来您想要的是页面以前状态的历史记录,或者至少是一个以前的值。我可以建议一种方法来做到这一点,但有一个警告:不要过度使用它。您可以在
ViewState
中的帖子之间持久化数据,但这些数据会写入页面本身。这样,当用户发布表单时,他们也会将数据发回。(最后还有更多。)

这里有一个简单的例子。首先,定义一个包含所有要存储的附加状态的类:

[Serializable]
public class PageState
{
    public string MyLabelPreviousText {get;set;}
}
然后在代码隐藏中:

public partial class MainPage : System.Web.UI.Page
{
    private PageState _pageState;

    protected void Page_Load(object source, EventArgs e)
    {
        _pageState = ViewState["pageState"] as PageState ?? new PageState();
        _pageState.MyLabelPreviousText = MyLabel.Text;
    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        ViewState["pageState"] = _pageState;
    }
加载页面时,您正在检查是否已将类(在本例中称为
PageState
)保存到
ViewState
。如果没有,则创建一个新的

PreRender
事件中,完成页面更新后,将使用标签文本更新该类,然后将整个内容再次保存到
ViewState
。这样,下次加载页面时,您可以再次检索它

我不确定您希望在哪一点保存标签的上一个文本。在本例中,它在
Load
事件期间保存文本。这样,如果从那时起文本在任何时候发生更改,则保存的值就是标签的原始文本。详细信息可能因您尝试执行的操作而异,但此模式允许您保存此类自定义数据,而无需使用
Session
并在内存中像这样堆积数据

我提到不要过度使用它。如果保存一些标签、控件和其他数据,
ViewState
可能不会太大。ASP.NET已经将每个服务器控件的状态放在那里了。但是如果你真的对它着迷,那么
ViewState
可能会变得巨大。所有这些数据都会写入页面,并且在每次回发时都会回发到服务器

这可能不是什么大问题,但要注意。使用Chrome开发工具、Fiddler,甚至只是检查页面源代码,看看这些数据是否变得太大,可能会影响性能

对于任何不熟悉的人,
ViewState
在HTML源代码中如下所示:

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
     value="/wEPDwULLTEyMzgxNzgyNDIPZBYCZg9kFgICAQ9kFggCAQ9kFgJmD2QWAgIBD2QWAmYPZBYMA
... etc.

状态管理-静态变量通常是最简单的方法。然后只需检查变量是否与测试方法相同。@Adam网页中的静态变量在所有页面视图之间共享Put x changed value in Hidden field(隐藏字段)和get Hidden field value in page_Init事件(如page.Request(page.FindControl(“hdnPageIdField”))Scott,感谢您的详细响应。不过我有一些疑问。在我的例子中,我希望存储值以供将来使用的是另一个方法调用的Button\u Click方法,该方法由Page\u Init调用。因此,在所有处理完成后,我将页面加载代码添加到我的按钮单击方法的末尾。我想在同一方法的开头检索前一个值。所以我要移动
ViewState[“pageState”]=\u pageState在按钮的开头单击,我在哪里实际阅读我需要的信息?难道我不能从_pageState读取吗?为什么还要使用_pageState呢?难道我不能单独使用ViewState,并在用下一个值覆盖它之前读取ViewState吗?
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
     value="/wEPDwULLTEyMzgxNzgyNDIPZBYCZg9kFgICAQ9kFggCAQ9kFgJmD2QWAgIBD2QWAmYPZBYMA
... etc.