HijriDateView ASP.NET 控件

分享于 

6分钟阅读

Web开发

  繁體

介绍

某些时候,在一个项目上工作,我面临着在一个 ASP.NET 页面上显示日期格式( 伊斯兰日历)的必要。 尽管超时表包含一个 HijriCalendar 类,但它只对应一种算法,并且不允许格式化日期的格式输出。 因此,本文中描述的HijriDateView 控件被开发成。

它看起来如何

HijriDateView 是一个 ASP.NET 复合控件,它由 Panel ( 对应于一个 HTML Div ) 和纯文本 inside 这个 Panel 组成。 默认情况下,在页面上,它看起来像:

由于 Panel 类用作容器,任何视觉样式都可以应用于该控件,以如下所示显示:

或者这个:

或者这个:

如何使用控件

仅编译附加的项目,或者使用 IslamicTools_bin.zip 文件中已经编译的程序集。 参考 IslamicTools.dll 来自你的ASP.NET web item项目,一个新项目将出现在studio的可视化工具箱中。 将它拖到 ASP.NET 页面的适当位置,将生成类似于下面的代码:
<IslamicTools:HijriDateViewID="hijriDateView"runat="server"></IslamicTools:HijriDateView>

现在,你可以设置控件的一些属性:

  • Language - 将用于阿拉伯月份名称音译的语言。 目前,可能的值是英语和俄语。
  • IncludeArabic - 指示是否在生成的文字中显示阿拉伯文文本。
  • Date - 用于转换和显示的日期。 如果未指定,当前日期将使用( DateTime.Now )。

所有常规 ASP.NET 控件可视属性也可以在这里设置。 现在,编译并运行你的页面以查看结果。

使用指导

有四个与控件相关的文件。

  • 包含 HijriDate 类的类,该类包含从FCL中封装 HijriCalendar 类。
  • HijriDate.xml - 包含不同月份的transliterations,包括阿拉伯语。
  • HijriDateView.bmp - 工具栏的位图。
  • HijriDateView.cs - 包含在 ASP.NET 页面上使用的HijriDateView Web控件。

在 ASP.NET 页面的生命周期中,创建了 HijriDateView 控件的一个新实例。 我们在构造函数中设置 DateLanguageIncludeArabic 属性的默认值。 如果用户手动设置值,它们将被重写。 在页面生命周期的LoadComplete 阶段,HijriDateViewCreateChildControls 方法将被称为。 它将准备容器( Panel ) 和文本( LiteralControl )的位置,同时,将创建 HijriDate 类的新实例并与定义的属性一起使用:

protectedoverridevoid CreateChildControls()
{
 Panel pnl = new Panel();
 HijriDate hd = new HijriDate(dt);
 string label = String.Format("<nobr>{0}</nobr>", 
 hd.ToString(language, includeArabic));
 LiteralControl lc = new LiteralControl(label);
 Controls.Add(pnl);
 pnl.Controls.Add(lc);
 base.CreateChildControls();
}

HijriDate 类将 DateTime 对象作为输入。 在构造函数中创建一个新的HijriCalendar 实例,以及与年。月数和月数相对应的private 数字字段。 另外,字符串资源从 HijriDate.xml 文件加载。

public HijriDate()
 : this(DateTime.Now)
{
}public HijriDate(DateTime dt)
{
 hijriCalendar = new HijriCalendar();
 hijriYearNumber = hijriCalendar.GetYear(dt);
 hijriMonthNumber = hijriCalendar.GetMonth(dt);
 hijriDayNumber = hijriCalendar.GetDayOfMonth(dt);
 LoadHijriDateXml();
}

HijriDate.xml 具有以下格式:

<?xmlversion="1.0"encoding="utf-8"?><Months><monthnumber="1"><English>Muharram</English><Arabic>محرم</Arabic><Russian>Мухаррам</Russian></month><monthnumber="2"><English>Safar</English><Arabic>صفر</Arabic><Russian>Сафар</Russian></month>. . .
 <monthnumber="12"><English>Dhu al-Hijja</English><Arabic>ذو الحجة</Arabic><Russian>Зуль-Хиджа</Russian></month></Months>

HijriDate 类具有重写方法 ToString(),它执行将日期的数值表示形式转换为字符串的所有工作:

publicoverridestring ToString()
{
 return ToString(SupportedLanguages.English, true);
}publicstring ToString(SupportedLanguages language, 
 bool includeArabicInscription)
{
 returnString.Format("{0} {1} {2}", hijriDayNumber.ToString(), 
 GetMonthName(language, includeArabicInscription),
 hijriYearNumber.ToString());
}

就是这样,你可以能已经注意到了,并不是所有的代码都在这里提供,尤它的是 LoadHijriDateXml()GetMonthName()。 但是,它们的行为应该从名称中显而易见,并且它们的代码可以在 HijriDateView_src.zip 文件中。

例子

可以在 http://www.russian-mosques.com 看到工作控制。 的IslamicTools 库现在只包含一个 HijriDateView 控件。 它将与其他控件一起扩展。 如果你有任何意见或者建议,欢迎与我联系。


控制  asp  asp-net  Hijri  
相关文章