首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从简单的cs更改aspx.cs的ViewState

从简单的cs更改aspx.cs的ViewState
EN

Stack Overflow用户
提问于 2016-10-05 06:31:24
回答 1查看 107关注 0票数 0

如果您必须在asp.net中的两个类(一个aspx.cs和一个简单的.cs类)之间传递一个值,并且该值必须存在于整个用户会话中,那么您该如何做呢?第二个类使用ViewState,我想从C1.cs更改类C2.aspx.cs的ViewState"VARIABLE1“的值,这是可能的吗?C1没有C1.aspx (它不是一个用户控件,而是一个简单的类。谢谢你的建议。

EN

回答 1

Stack Overflow用户

发布于 2016-10-05 08:10:44

这里是关键:

该值必须存在于整个用户会话中

显然,变量的主要位置应该在会话中:

代码语言:javascript
复制
Session["VARIABLE1"]

然而,我也看到了这个:

我想要将类C2.aspx.cs的ViewState"VARIABLE1“的值从C1.cs改为

我建议重新思考C1.cs,使用更多的函数式风格。在那里设计类,而不是像这样:

代码语言:javascript
复制
void C1Function()
{
    if (Session["VARIABLE1"] == "value") 
        Session["VARIABLE1"] = somevalue;
}

///...

class C2
{
    void Page_Load(object sender, EventArgs e)
    {
        C1TypeInstance.C1Function();
    }
}

取而代之的是,你最终的代码更像这样:

代码语言:javascript
复制
string C1Function(sting VARIABLE1)
{
   if (VARIABLE1== "value")
      return somevalue;
   return VARIABLE1;
}

///...

class C2
{
    void Page_Load(object sender, EventArgs e)
    {
        Session["VARIABLE1"] = C1TypeInstance.C1Function(Session["VARIABLE1"]);
    }
}

或者像这样:

代码语言:javascript
复制
public class C1
{ 
    private string variable1;
    public C1(string VARIABLE1)
    {
        variable1 = VARIABLE1;
    }


    string C1Function()
    {
        if (variable1 == "value") 
            variable1 = somevalue;
        return variable1
    }
}

///...

class C2
{
    void Page_Load(object sender, EventArgs e)
    {
        var C1TypeInstance = new C1(Session["VARIABLE1"]);
        Session["VARIABLE1"] = C1TypeInstance.C1Function();
    }
}

或者像这样:

代码语言:javascript
复制
static string C1Function(sting VARIABLE1)
{
   if (VARIABLE1== "value")
      return somevalue;
   return VARIABLE1;
}

///...

class C2
{
    void Page_Load(object sender, EventArgs e)
    {
        Session["VARIABLE1"] = C1Type.C1Function(Session["VARIABLE1"]);
    }
}

如果所有其他方法都失败了,您可以在会话中存储C1类型的整个实例,如下所示:

代码语言:javascript
复制
public class C1
{ 
    public string VARIABLE1 {get; set;}
}

///...

class C2
{
    void Page_Load(object sender, EventArgs e)
    {
        Session["VARIABLE1"] = Session["VARIABLE1"] ?? new C1();

        ((C1)Session["VARIABLE1"]).VARIABLE1 = "somevalue";
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39862767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档