2016-10-03 5 views
0

Я пытаюсь сделать кириллическое слово «име» вместо имени столбца (FirstName) в таблице из базы данных, но вместо этого получаю некоторые странные символы «Èìå». У меня есть <globalization fileEncoding="utf-8" /> в моем webconfig, а также я проверил файлы, содержащие код, и все они сохранены как UTF-8.Атрибут отображения в MVC не отображает кириллицу в HTML

Я уверен, что проблема вызвана чем-то в ModelRS.edmx или файлами, содержащимися в этой иерархии. Вот два скриншота, которые содержат больше кода.

enter image description here

enter image description here

Должен ли я просто жёстко «» име в HTML, как я попробовал и работает нормально, но он чувствует, как плохая практика, и это проект, я показываю до экзамена судей?

Мой HTML блок (смотри также скриншот для comperhensive информации):

@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; } 
} 
+0

Я выложил пару своих взглядов и не нуждался в использовании '.First()' .. что происходит, когда это вынимается? Я вижу, что у вас была аннотация данных на модели, чтобы она была настроена так, как вам хотелось. Это не работает? –

+0

Когда я удаляю .First() Visual Studio не распознает FirstName И я прокомментировал первую модель, потому что я использую разбиение на страницы, а вторая требуется. У меня не может быть двух моделей, thoguh – Georgi93

+0

У меня это случилось со мной и раньше. Просто введите его вручную. Intellisense не признает этого. '@ Html.DisplayNameFor (model => model.FirstName)' –

ответ

0

AFAIK, Visual Studio имеет возможность сохранять файл с различным кодированием. Откройте файл CS, который содержит класс модели, выберите «Файл»> «Сохранить как»> «Сохранить с кодировкой» и выберите «UTF-8 с сигнатурой» (или другой необходимой кодировкой) в Advanced Save Options.

Если решения выше по-прежнему не работает, откройте Layout.cshtml файл, который содержит базовый HTML-тег для просмотра страниц, а затем использовать как атрибут Ланг и мета-тег:

<html lang="ru"> 

<meta charset="UTF-8"> 

Это объявим всю страницу просмотра содержащий страницу компоновки как русский с кодировкой UTF-8, поэтому кириллические символы должны отображаться правильно, как указано атрибутом Display.

Для задачи Intellisense, которая не признает свое имя класса модели, перейдите в меню Сервис => Параметры => Text Editor => C# => Intellisense, и проверить, если 2 условия ниже применяются:

  1. " Показывать список завершения после ввода символа ".

  2. Введено, набрав следующие символы: текстовое поле содержит {}[]().,:;+-*/%&|^!~=<>[email protected]#'"\.

Другие предложения приветствуются.

0

Может звучать как довольно странная вещь, но вам нужно проверить, что ваш файл .cs, содержащий модель, сохраняется точно в кодировке utf-8. То есть попробуйте открыть этот файл в каком-то редакторе, например, в блокноте ++ и сохранить точно в utf-8.

Мы используем кириллический дисплей («Имя» ...), поэтому это не должно быть основной проблемой.

0

Решение должно заключаться в кодировании tblTeachers (это моя модель), как некоторые из вас предложили, в UTF-8 и сохранить его таким образом. До этого я только открывал страницы Controller и HTML с блокнотом ++, и все они были UTF-8, но я забыл проверить модель.

Смежные вопросы