1

我尝试从数据库中呈现西里尔字母“име”而不是表中的列名(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);
        }
    }

我的“模型”:

 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; }
}
4

3 回答 3

0

听起来可能很奇怪,但您需要检查包含模型的 .cs 文件是否完全以 utf-8 编码保存。即尝试在notepad++之类的编辑器中打开这个文件,并完全保存在utf-8中。

我们经常使用 Cyrillic Display("Name"...),所以它不应该是核心问题。

于 2016-10-03T22:18:20.673 回答
0

AFAIK,Visual Studio 可以选择以不同的编码保存文件。打开包含模型类的 CS 文件,选择 File => Save As => Save with Encoding,然后在 Advanced Save Options 上选择“UTF-8 with signature”(或您需要的其他编码)。

如果上述解决方案仍然不起作用,请打开包含视图页面的基本 HTML 标记的 Layout.cshtml 文件,然后使用 lang 属性和元标记:

<html lang="ru">

<meta charset="UTF-8">

这会将包含布局页面的整个视图页面声明为使用 UTF-8 编码的俄语,因此西里尔字符应按照Display属性给出的正确呈现。

对于无法识别您的模型类名称的 Intellisense 问题,请转到工具 => 选项 => 文本编辑器 => C# => Intellisense,并检查是否适用以下 2 个条件:

  1. “输入字符后显示完成列表”已选中。

  2. “通过键入以下字符提交”文本框包含{}[]().,:;+-*/%&|^!~=<>?@#'"\.

欢迎提出其他建议。

于 2016-10-04T01:51:30.920 回答
0

正如你们中的一些人建议的那样,解决方案是将 tblTeachers (这是我的模型)编码为 UTF-8 并以这种方式保存。在那之前我只用记事本++打开Controller和HTML页面,它们都是UTF-8,但我忘了检查模型。

于 2016-10-04T19:36:53.493 回答