2016-10-03 4 views
0

데이터베이스에서 테이블의 열 (이름) 대신 키릴 문자 "име"를 렌더링하려고하지만 대신 이상한 기호 "Èìå"가 표시됩니다. 내 webconfig에 <globalization fileEncoding="utf-8" />이 있고 또한 코드가 들어있는 파일을 검사했으며 모두 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을 인식하지 못합니다. 그리고 첫 번째 모델은 페이지 매김을 사용하고 두 번째 모델은 필수이므로 주석 처리했습니다. 나는 2 개의 모델을 가질 수 없다. thoguh – Georgi93

+0

나는 그걸 나에게도 전에 일어난 적이있다. 그냥 수동으로 타이핑해라. Intellisense는 그것을 인식하지 못합니다. '@ Html.DisplayNameFor (model => model.FirstName)' –

답변

0

AFAIK, Visual Studio에는 다른 인코딩으로 파일을 저장할 수있는 옵션이 있습니다. 모델 클래스가 포함 된 CS 파일을 열고 파일 => 다른 이름으로 저장 => 인코딩으로 저장을 선택하고 고급 저장 옵션에서 "서명이있는 UTF-8"(또는 필요한 다른 인코딩)을 선택하십시오. 아직 위의 방법으로 문제가 해결되지 않으면

, 다음, 뷰 페이지에 대한 기본 HTML 태그가 포함 된 Layout.cshtml 파일을 열 lang 속성과 메타 태그를 모두 사용 :

<html lang="ru"> 

<meta charset="UTF-8"> 

이 전체보기 페이지를 선언합니다 레이아웃 페이지가 UTF-8 인코딩을 사용하여 러시아어로 포함되어 있으므로 키릴 문자는 Display 속성에 따라 올바르게 렌더링되어야합니다.

=> 옵션 => 텍스트 편집기 => C# => 인텔리 도구로 이동 모델 클래스 이름을 인식하고, 확인하지 않습니다 인텔리 문제에 대한

아래의 두 조건이 적용되는 경우 :

  1. " 문자 입력 후 완료 목록 표시 "가 선택되었는지 확인하십시오.

  2. "다음 문자를 입력하여 처리"텍스트 상자에 {}[]().,:;+-*/%&|^!~=<>[email protected]#'"\이 포함되어 있습니다.

기타 제안 사항.

0

이 같은 소리 수 꽤 이상한 일이지만, 모델을 포함하고있는 .cs 파일이 utf-8 인코딩으로 정확하게 저장되었는지 확인해야합니다. 나는. 메모장 + +와 같은 일부 편집기에서이 파일을 열어보고 utf-8로 정확히 저장하십시오.

키릴 문자 표시 ("이름"...)을 많이 사용하므로 핵심적인 문제가 아닙니다.

0

해결책 중 일부는 UTF-8로 tblTeacher (내 모델)를 인코딩하여 저장하는 것이 해결책이었습니다. 전에 컨트롤러와 HTML 페이지를 메모장 + +로 열었을 때 모두 UTF-8 이었지만 모델을 확인하는 것을 잊었습니다.