0

我的问题:我有两页

1- page.aspx 用于英语语言模式

2- page-ar.aspx 用于阿拉伯语模式

我有LinkeButton点击我通过会话;

Session["lang"] = "ar";

或者

Session["lang"] = "en";

我需要获取 page.aspx 名称并将此字符串“-ar”添加到转到阿拉伯语模式或从 page-ar.aspx 中删除“-ar”到转到英语模式

并考虑到您可能在 pageurl 中有一些查询字符串。

4

4 回答 4

2

这是在Mr/sheKhar帮助和我自己的搜索之后的答案

我有两个按钮

一个用于阿拉伯语,另一个用于英语模式

当用户点击英文按钮时

    protected void english_Click(object sender, EventArgs e)
{
    string Path = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
    System.IO.FileInfo Info = new System.IO.FileInfo(Path);
    string pageName = Info.Name;

    if (Session["lang"].ToString() == "ar")
    {
        string enlink = pageName.Substring(0, pageName.Length - 8) + ".aspx";
        Session["lang"] = "en";

        var page = (Page)HttpContext.Current.CurrentHandler;
        string QueryString = page.ClientQueryString;
        if (!(string.IsNullOrEmpty(QueryString)))
        {
            Response.Redirect(enlink + "?" + QueryString);
        }
        else
        {
            Response.Redirect(enlink);
        }
    }

}

当用户点击阿拉伯语按钮时

 protected void arabic_Click(object sender, EventArgs e)
{

    string Path = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
    System.IO.FileInfo Info = new System.IO.FileInfo(Path);
    string pageName = Info.Name;

    if (Session["lang"].ToString() == "en")
    {
        string arlink= pageName.Substring(0, pageName.Length - 5) + "-ar.aspx";
        Session["lang"] = "ar";
        //
        var page = (Page)HttpContext.Current.CurrentHandler;
        string QueryString = page.ClientQueryString; // this code get The Query String 

        if (!(string.IsNullOrEmpty(QueryString)))
        {
            Response.Redirect(arlink +"?"+ QueryString);
        }
        else
        {
            Response.Redirect(arlink);
        }
    }

}

希望这段代码可以帮助某人:)

于 2013-01-06T11:20:43.017 回答
2

您可以在代码隐藏页面中使用以下代码(例如 Page_Load):

protected string LinkUrl;

protected void Page_Load(object sender, EventArgs e)
{
    var language = (string) Session["lang"] ?? "en";

    LinkUrl = (language == "ar")
                ? Page.ResolveUrl("~/page-ar.aspx")
                : Page.ResolveUrl("~/page.aspx");
}

然后,您可以在页面标记上放置如下链接:

 <a href="<%= LinkUrl %>">Language Demo</a>
于 2013-01-06T10:38:23.023 回答
1

如果您刚开始设计系统,我建议您使用资源.resx文件。

要使用资源使 UI 多语言,请查看这篇文章:http: //support.microsoft.com/kb/917414

对于从数据库中提取的数据,您将不得不使用大量的 if 语句。

If (arabic) {
     Select arabic data
}
else
{
     Select english data
}

如果您考虑使用 resx 文件,我可以为您提供更多信息。

使用此解决方案,没有字符串操作,查询字符串会很好,一切都会正常工作。

于 2013-01-06T10:45:39.900 回答
1
string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx

string host = HttpContext.Current.Request.Url.Host;
// localhost

您可以创建一个可以返回当前页面名称的函数,如下所示

public string GetCurrentPageName()
{
    string Path = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
    System.IO.FileInfo Info = new System.IO.FileInfo(Path);
    string pageName = Info.Name;
    return pageName;
} 

现在最后你可以创建一个函数并传递会话值,如下所示

 public string GetCurrentPageName(string fileName)
{
     string Path = System.Web.HttpContext.Current.Request.Url.AbsolutePath;
    System.IO.FileInfo Info = new System.IO.FileInfo(Path);
    string pageName = Info.Name;
    if (fileName == "ar")
        return pageName.Substring(0, pageName.Length - 7) + ".aspx";
    else
        return pageName.Substring(0, pageName.Length - 5) + "_ar.aspx";    
 } 

在上述函数中传递会话值,它将起作用。

注意:-我没有测试过。

于 2013-01-06T10:03:00.403 回答