【问题标题】:I couldn't get the value from the user controller我无法从用户控制器中获取值
【发布时间】:2013-11-25 12:24:59
【问题描述】:

这是我的问题。我有一个母版页,其中包含一些用于设置网页语言的标志。

在母版页中,我有一个包含菜单项的用户控制器。这些菜单项取决于选择的标志,它会改变。

当我查看Web应用程序的生命周期时,首先运行mainpage_loader,然后运行用户控件加载程序,最后, 运行主页面中定义的函数(标志按钮函数)。

但我需要的是在用户控件内获取会话值。取决于此会话值,加载菜单取决于选择的语言。 但在这种情况下,我永远不会在用户控件中捕获会话值,因为在通过步骤母版页功能之后。 我怎么解决这个问题。谢谢。

我的主页

     protected void Page_Load(object sender, EventArgs e)
            {
                if (Session["lang"]==null)
                {
                    Session["lang"] = "m_en";

                }
                else
                {

                }

            }


         [DirectMethod(IDMode = DirectMethodProxyIDMode.None)]
            public void Change_Lang_Event(string lang)
            {    
                CultureInfo ci;

                switch (lang)
                {
                    case "m_tr":
                        ci = new CultureInfo("tr-TR");
                        Session["lang"] = "m_tr";
//problem is here I coulnt reach Language properti
       ((UserControl)Page.Master.FindControl("MyMenu1")).Language = Session["lang"].ToString();


                        break;
                    case "m_en":
                        ci = new CultureInfo("en-US");
                        Session["lang"] = "m_en";



                        break;
                    case "m_ru":
                        ci = new CultureInfo("ru-RU");
                        Session["lang"] = "m_ru";




                    default:
                       ci = new CultureInfo("tr-TR");
                        Session["lang"] = "m_tr";


                        break;
                }

我的用户控制:

 public partial class MyMenu : System.Web.UI.UserControl

{
    static List<Ofis> lst;
    static CultureInfo cim;
    string dilSesion = "";
    private string _languages;

    public string Languages
    {
        get { return _languages; }
        set { _languages = value; }
    }

    protected void Page_Load(object sender, EventArgs e)
    {

       dilSesion =   Session["lang"].ToString();
      X.Msg.Alert("Uyarı", dilSesion).Show();


    }



}

主aspx;

 <asp:Contentplaceholder id="Contentplaceholder1" runat="server">
            <uc1:MyMenu ID="MyMenu1" runat="server" />
        </asp:Contentplaceholder>

【问题讨论】:

  • 不错,如果它对您有用,请接受。 :) 谢谢。
  • 如果能正常运行,请等待 5 分钟,

标签: c# asp.net asp.net-mvc master-pages multilingual


【解决方案1】:

如果您在 UserControl 中定义了一个属性,即

private string _language;

public string Language
{
    get
    {
        return _language;
    }

    get
    {
        return _language;
    }

}

然后你可以在后面的MasterPage代码中设置:

((UserControl)Page.Master.FindControl('controlID')).Language = Session["lang"].ToString()

请注意,用户控件必须转换为您的 UserControl 类。

【讨论】:

  • 我无法访问语言属性
  • 我已对其进行了更新以添加强制转换,需要将其强制转换为您的用户控件类以使属性可见。
  • 亲爱的还是不可见
  • 它说我 system.web.ui.usercontroler 包含一个定义语言
  • 用完整的 UserControl 代码更新你的答案,我就能看看发生了什么。
猜你喜欢
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 2023-02-06
  • 1970-01-01
相关资源
最近更新 更多