2017-02-01 3 views
1

Ich arbeite das Grid.Mvc Framework, um meine Modelldaten zu präsentieren.Erweitern Grid.Mvc Anmerkungen mit Ressource-Datei als Header-Quelle

Blick auf: Source Code und Documentation

Out of the box gibt es zwei Optionen Spaltenüberschriften

Zuerst präsentieren:

Ohne ressource Datei ..

//Annotation 
[GridColumn(Title = "Active Foo?")] 
public bool Enabled { get; set; } 


[GridColumn(Title = "Date", Format = "{0:dd/MM/yyyy}")] 
public DateTime FooDate { get; set; } 

..

//Display the Model items with assigned Column Titles 
@Html.Grid(Model).AutoGenerateColumns() 

Zweitens:

Verwenden Ressource Strings in Ansicht ..

//Assign Column Header from 
@Html.Grid(Model).Columns(columns => 
{ 
     columns.Add(n => n.Enabled).Titled(DisplayFieldNames.Enabled); 
     columns.Add(n => n.FooDate).Titled(DisplayFieldNames.FooDate); 
}) 

Ich möchte wissen, wie ich die erste Methode (unter Verwendung von Daten Annotation in Model)

wie

Etwas verlängern :

[GridColumn(Title ="Enabled", ResourceType = typeof(DisplayFieldNames))] 

und

[GridColumn(Title = "Date", ResourceType = typeof(DisplayFieldNames), Format = "{0:dd/MM/yyyy}")] 

Die Resource innen Attribut sollte das Gitter sucht die Spaltentitel in meiner Ressource-Datei „DisplayFieldNames“

Antwort

0

ich meine eigene Lösung mit der Unterstützung eines Freundes gefunden machen.

Hier ist es, hoffentlich ist es auch für andere hilfreich.

public class LocalizedGridCoulmnAttribute : GridColumnAttribute 
{ 

    private Type _resourceType; 

    /// <summary> 
    /// The type of the Ressource file 
    /// </summary> 
    public Type ResourceType 
    { 
     get 
     { 
      return this._resourceType; 
     } 
     set 
     { 
      if (this._resourceType != value) 
      { 
       ResourceManager rm = new ResourceManager(value); 
       string someString = rm.GetString(LocalizedTitle); 

       this._resourceType = value ?? value; 
      } 
      if (ResourceType != null && LocalizedTitle != String.Empty) 
      { 
       ResourceManager rm = new ResourceManager(ResourceType); 
       Title = rm.GetString(LocalizedTitle); 
      } 
     } 
    } 

    /// <summary> 
    /// Overrides The Title Property of GridColumnAttribute 
    /// Works with Ressourcefile 
    /// </summary> 
    public string LocalizedTitle 
    { 
     set { 
      if (ResourceType != null && value != String.Empty) 
      { 
       ResourceManager rm = new ResourceManager(ResourceType); 
       Title = rm.GetString(value); 
      } 
      else Title = value ?? value; 
     } 
     get { return Title; } 
    } 
}