2016-10-03 4 views
0

データベースのテーブルの列(FirstName)の代わりにキリル文字 "име"を表示しようとしましたが、奇妙な記号 "Èìå"が表示されます。私はwebconfigに<globalization fileEncoding="utf-8" />を持っており、コードを含んでいるファイルをチェックしたところ、それらはすべてUTF-8として保存されています。MVCの表示属性がHTMLにキリル文字を表示しない

私はこの問題がModelRS.edmxの何か、またはこの階層に含まれるファイルによって引き起こされているかどうかは確かです。より多くのコードを提供する2つのスクリーンショットがあります。

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番目のモデルは必須であるため、最初のモデルにコメントしました。私は2つのモデルを持つことはできません、thoguh – Georgi93

+0

これまでに私に起こったこともありました。単に手動で入力してください。 Intellisenseはそれを認識しません。 '@ H​​tml.DisplayNameFor(model => model.FirstName)' –

答えて

0

AFAIK、Visual Studioには、別のエンコードでファイルを保存するオプションがあります。モデルクラスを含むCSファイルを開き、ファイル=>名前を付けて保存=>エンコーディングで保存を選択し、拡張保存オプションで「署名付きUTF-8」(または必要な他のエンコーディング)を選択します。まだ上記のソリューションが動作しない場合は

、その後、ビューページのベースHTMLタグが含まれているあなたのLayout.cshtmlファイルを開くlang属性やmetaタグの両方を使用します。

<html lang="ru"> 

<meta charset="UTF-8"> 

このビュー全体のページを宣言しますレイアウトページがUTF-8エンコーディングのロシア語として含まれているため、キリル文字はDisplay属性で指定されたとおりに正しく表示されます。 、あなたのモデルクラス名を認識ツール=>オプション=>テキストエディタ=> C#=>インテリセンスに移動して、以下の2つの条件が適用されているかどうかを確認しないインテリセンスの問題については

  1. 」文字が入力された後に完了リストを表示する "チェックボックスがオンになっています。

  2. 「次の文字を入力することでコミットしました」というテキストボックスには、{}[]().,:;+-*/%&|^!~=<>[email protected]#'"\が含まれています。

他の提案を歓迎します。

0

はのように聞こえることができますかなり奇妙なことですが、モデルを含む.csファイルがutf-8エンコーディングで正確に保存されていることを確認する必要があります。私。メモ帳++のようなエディタでこのファイルを開き、utf-8に正確に保存してみてください。

キリル文字表示(「名前」...)が多かったため、コアの問題ではありません。

0

あなたが提案したように、tblTeacher(これは私のモデルです)をUTF-8にエンコードし、そのように保存することが解決策でした。 これまで、私はメモ帳++でコントローラとHTMLページを開いていましたが、それらはすべてUTF-8でしたが、モデルをチェックするのを忘れました。

関連する問題