شنبه 4 اردیبهشت 1395 - 17:15
استفاده از متون فارسی در Enum
بسم الله الرحمن الرحیم
حل مشکل استفاده چند کلمه ای در enum ها
حتما تا حالا براتون پیش امده که بخواین با کلاس Enum رشته فارسی بنویسین ولی به مشکل بر بخورین ، یعنی نمی توانید دو تا کلمه که بین آنها فاصله وجود دارد را بنویسید.
برای رفع این مشکل میتوانید نام فیلدهای Enum خود را نوشته و در بالای آن از Dsiplay استفاده نمایید مانند شکل زیر
بسم الله الرحمن الرحیم
حل مشکل استفاده چند کلمه ای در enum ها
حتما تا حالا براتون پیش امده که بخواین با کلاس Enum رشته فارسی بنویسین ولی به مشکل بر بخورین ، یعنی نمی توانید دو تا کلمه که بین آنها فاصله وجود دارد را بنویسید.
برای رفع این مشکل میتوانید نام فیلدهای Enum خود را نوشته و در بالای آن از Dsiplay استفاده نمایید مانند شکل زیر
در قسمت DropDownList آن بخوبی اسمهای فارسی را برای شما نمایش می دهد.
اما مشکل دیگری که هست وقتی شما لیست جدول خود را مشاهده می کنید این فیلد به همان اسم انگلیسی خود نمایش داده می شود
برای رفع این مشکل شما در این میسر > DisplayTemplates Shared Views > (این مسیر را ایجاد کنید)یک پارشیال Enum.cshtml (دقت کنید E بزرگ هست)ایجاد می کنید
و کدهای زیر را در آن کپی می کنید
@model Enum
@if (EnumHelper.IsValidForEnumHelper(ViewData.ModelMetadata))
{
// Display Enum using same names (from [Display] attributes) as in editors
string displayName = null;
foreach (SelectListItem item in EnumHelper.GetSelectList(ViewData.ModelMetadata, (Enum)Model))
{
if (item.Selected)
{
displayName = item.Text ?? item.Value;
}
}
// Handle the unexpected case that nothing is selected
if (String.IsNullOrEmpty(displayName))
{
if (Model == null)
{
displayName = String.Empty;
}
else
{
displayName = Model.ToString();
}
}
@Html.DisplayTextFor(model => displayName)
}
else
{
// This Enum type is not supported. Fall back to the text.
@Html.DisplayTextFor(model => model)
}
و حالا پروژه خود را اجرا کرده و مشاهده می کنید که لیست جدول شما درست شده است.