MVC 中的显示属性在 HTML 中不显示西里尔字符
Display attribute in MVC doesnt display cyrillic in the HTML
我尝试呈现西里尔文字“име”而不是数据库 table 中的列名 (FirstName),但我收到了一些奇怪的符号“Èìå”。我的 webconfig 中有一个 <globalization fileEncoding="utf-8" />
,我还检查了包含代码的文件,它们都保存为 UTF-8。
我很确定问题是由 ModelRS.edmx 中的某些内容或此层次结构中包含的文件引起的。下面是提供更多代码的两个屏幕截图。
我是否应该在 HTML 中对“Име”进行硬编码,因为我尝试过并且工作正常,但感觉不太好,这是我要向考试评委展示的项目?
我的 html 块(另请参阅屏幕截图以获取全面信息):
@using PagedList.Mvc;
@model PagedList.IPagedList<Rating_System.Models.tblTeacher>
@Html.DisplayNameFor(model => model.First().FirstName)
// I have .First() because the web page has pagination
我的控制器:
public class TeachersController : Controller
{
private RSEntities db = new RSEntities();
// GET: Teachers
public ActionResult Index(int page = 1, int pageSize = 8)
{
List<tblTeacher> listTeachers = db.tblTeachers.ToList();
PagedList<tblTeacher> model = new PagedList<tblTeacher>(listTeachers, page, pageSize);
//return View(db.tblTeachers.ToList());
return View(model);
}
}
我的"Model":
public partial class tblTeacher
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public tblTeacher()
{
this.tblRatings = new HashSet<tblRating>();
this.tblTeachersDisciplines = new HashSet<tblTeachersDiscipline>();
}
public int ID { get; set; }
[Required]
[Display(Name = "Име:")]
[StringLength(50)]
public string FirstName { get; set; }
}
听起来很奇怪,但您需要检查包含模型的 .cs 文件是否以 utf-8 编码正确保存。 IE。尝试在某些编辑器(如 notepad++)中打开此文件,并以 utf-8 格式保存。
我们经常使用 Cyrillic Display("Name"...),所以这应该不是核心问题。
AFAIK,Visual Studio 可以选择用不同的编码保存文件。打开包含模型 class、select File => Save As => Save with Encoding 的 CS 文件,然后在 Advanced Save Options 上选择 "UTF-8 with signature"(或您需要的其他编码)。
如果上述解决方案仍然无效,请打开您的 Layout.cshtml 文件,其中包含用于查看页面的基本 HTML 标记,然后同时使用 lang 属性和元标记:
<html lang="ru">
<meta charset="UTF-8">
这会将包含布局页面的整个视图页面声明为使用 UTF-8 编码的俄语,因此西里尔字符应该按照 Display
属性给出的正确呈现。
对于无法识别您的模型 class 名称的 Intellisense 问题,请转到工具 => 选项 => 文本编辑器 => C# => Intellisense,并检查是否应用了以下 2 个条件:
"Show completion list after a character is typed" 已检查。
"Commited by typing the following characters" 文本框包含 {}[]().,:;+-*/%&|^!~=<>?@#'"\
.
欢迎提出其他建议。
解决方案是按照你们中的某些人的建议,将 tblTeachers(这是我的模型)编码为 UTF-8 并以这种方式保存。
之前我只是用记事本++打开Controller和HTML页面,都是UTF-8,但是我忘了检查模型
我尝试呈现西里尔文字“име”而不是数据库 table 中的列名 (FirstName),但我收到了一些奇怪的符号“Èìå”。我的 webconfig 中有一个 <globalization fileEncoding="utf-8" />
,我还检查了包含代码的文件,它们都保存为 UTF-8。
我很确定问题是由 ModelRS.edmx 中的某些内容或此层次结构中包含的文件引起的。下面是提供更多代码的两个屏幕截图。
我是否应该在 HTML 中对“Име”进行硬编码,因为我尝试过并且工作正常,但感觉不太好,这是我要向考试评委展示的项目?
我的 html 块(另请参阅屏幕截图以获取全面信息):
@using PagedList.Mvc;
@model PagedList.IPagedList<Rating_System.Models.tblTeacher>
@Html.DisplayNameFor(model => model.First().FirstName)
// I have .First() because the web page has pagination
我的控制器:
public class TeachersController : Controller
{
private RSEntities db = new RSEntities();
// GET: Teachers
public ActionResult Index(int page = 1, int pageSize = 8)
{
List<tblTeacher> listTeachers = db.tblTeachers.ToList();
PagedList<tblTeacher> model = new PagedList<tblTeacher>(listTeachers, page, pageSize);
//return View(db.tblTeachers.ToList());
return View(model);
}
}
我的"Model":
public partial class tblTeacher
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public tblTeacher()
{
this.tblRatings = new HashSet<tblRating>();
this.tblTeachersDisciplines = new HashSet<tblTeachersDiscipline>();
}
public int ID { get; set; }
[Required]
[Display(Name = "Име:")]
[StringLength(50)]
public string FirstName { get; set; }
}
听起来很奇怪,但您需要检查包含模型的 .cs 文件是否以 utf-8 编码正确保存。 IE。尝试在某些编辑器(如 notepad++)中打开此文件,并以 utf-8 格式保存。
我们经常使用 Cyrillic Display("Name"...),所以这应该不是核心问题。
AFAIK,Visual Studio 可以选择用不同的编码保存文件。打开包含模型 class、select File => Save As => Save with Encoding 的 CS 文件,然后在 Advanced Save Options 上选择 "UTF-8 with signature"(或您需要的其他编码)。
如果上述解决方案仍然无效,请打开您的 Layout.cshtml 文件,其中包含用于查看页面的基本 HTML 标记,然后同时使用 lang 属性和元标记:
<html lang="ru">
<meta charset="UTF-8">
这会将包含布局页面的整个视图页面声明为使用 UTF-8 编码的俄语,因此西里尔字符应该按照 Display
属性给出的正确呈现。
对于无法识别您的模型 class 名称的 Intellisense 问题,请转到工具 => 选项 => 文本编辑器 => C# => Intellisense,并检查是否应用了以下 2 个条件:
"Show completion list after a character is typed" 已检查。
"Commited by typing the following characters" 文本框包含
{}[]().,:;+-*/%&|^!~=<>?@#'"\
.
欢迎提出其他建议。
解决方案是按照你们中的某些人的建议,将 tblTeachers(这是我的模型)编码为 UTF-8 并以这种方式保存。 之前我只是用记事本++打开Controller和HTML页面,都是UTF-8,但是我忘了检查模型