如何在c sharp中以编程方式将html标签目录属性从rtl设置为ltr,反之亦然
Posted
技术标签:
【中文标题】如何在c sharp中以编程方式将html标签目录属性从rtl设置为ltr,反之亦然【英文标题】:how to set html tag dir attribute from rtl to ltr and vice versa programmatically in c sharp 【发布时间】:2012-05-19 22:18:19 【问题描述】:我正在尝试在 asp.net 上构建一个多语言网站,我需要在 c sharp 中以编程方式将 html 标记 dir 属性从 rtl 设置为 ltr,反之亦然。 现在我有 3 种语言英语、希伯来语和俄语,我需要在它们之间切换。 每次从 ltr 更改为 rtl 语言以及从 rtl 更改为 ltr 语言时,我都需要更改站点的方向 这里是我的母版页的例子 请帮帮我
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<link href="CSS/Site-RTL.css" rel="stylesheet" type="text/css" />
</head>
<body id="html" runat="server">
<form id="theForm" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder" runat="server">
</asp:ContentPlaceHolder>
</div>
<div style="margin-top: 20px;">
<asp:LinkButton ID="btnSetEnglish" runat="server" Text="English" CommandArgument="en-GB"
OnClick="RequestLanguageChange_Click"></asp:LinkButton>
<asp:LinkButton ID="btnSetHebrew" runat="server" Text="Hebrew" CommandArgument="he-IL"
OnClick="RequestLanguageChange_Click"></asp:LinkButton>
<asp:LinkButton ID="btnSetRussian" runat="server" Text="Russian" CommandArgument="ru-RU"
OnClick="RequestLanguageChange_Click"></asp:LinkButton>
</div>
<div>
<asp:SiteMapDataSource ID="smdsMaster" runat="server" OnDataBinding="Page_Load" />
<asp:Menu ID="MenuMaster" runat="server" CssClass="menu" DataSourceID="smdsMaster"
Orientation="Horizontal" StaticDisplayLevels="2" StaticSubMenuIndent="16px" MaximumDynamicDisplayLevels="1">
<DataBindings>
<asp:MenuItemBinding DataMember="SiteMapNode" NavigateUrlField="Url" />
</DataBindings>
</asp:Menu>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
这里是母版页后面的代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Localization.Classes;
public partial class MasterPage : System.Web.UI.MasterPage
protected void Page_Load(object sender, EventArgs e)
protected void RequestLanguageChange_Click(object sender, EventArgs e)
LinkButton senderLink = sender as LinkButton;
//store requested language as new culture in the session
if (senderLink.CommandArgument == "he-IL")
// some code
else
// some code
Session[Global.SESSION_KEY_CULTURE] = senderLink.CommandArgument;
//reload last requested page with new culture
Server.Transfer(Request.Path);
【问题讨论】:
【参考方案1】:在你的代码后面:
this.html.Attributes.Add("dir", "ltr");
如果这不起作用,另一种方法是将属性直接放在标签上并使用属性来填充它:
<body dir="<%:Dir%>">
public string Dir get; set;
// Set Dir in the on click event
protected void RequestLanguageChange_Click(object sender, EventArgs e)
LinkButton senderLink = sender as LinkButton;
//store requested language as new culture in the session
if (senderLink.CommandArgument == "he-IL")
Dir = "rtl";
else
Dir = "ltr";
Session[Global.SESSION_KEY_CULTURE] = senderLink.CommandArgument;
//reload last requested page with new culture
Server.Transfer(Request.Path);
【讨论】:
我尝试了您的建议,但对我不起作用。我会在后面贴一个代码。 @zZD1M0NZz - 在浏览器中查看源代码时会呈现什么?你有任何错误吗?例外? 不,没有错误或异常,也没有向body标签添加rtl属性 @zZD1M0NZz - 给定另一个选项。 抱歉,我不明白如何在点击事件中设置目录以上是关于如何在c sharp中以编程方式将html标签目录属性从rtl设置为ltr,反之亦然的主要内容,如果未能解决你的问题,请参考以下文章
如何在特定文件夹中的 iCloud 上传图像并在目标 C 中以编程方式访问该特定文件夹