2010-01-10 3 views

Répondre

4

Il semble que l'ancienne méthode a été supprimée.

Voici comment faire maintenant:

VB.NET

D'abord, vous passez l'objet Html dans la classe gridmodel par le constructeur, vous pouvez l'utiliser dans la classe gridmodel.

Imports MvcContrib.UI.Grid 

Public Class PersonGridModel 
    Inherits GridModel(Of Person) 

    Public Sub New(ByVal html as HtmlHelper) 
     Column.For(Function(u) html.ActionLink("Edit", "Edit", "Person", New With {.id = u.PersonId}, Nothing)).DoNotEncode() 
    End Sub 
End Class 

Alors, selon vous, vous faisant passer par le constructeur:

<%=Html.Grid(Model).WithModel(New MemberRetentionTrackingSystem.InboundCallGridViewModel(Html))%> 

C#

GridModel:

public class PersonGridModel : GridModel { 
    public PersonGridModel(HtmlHelper html) { 
     Column.For(u => html.ActionLink(“Edit”, “Edit”, “Person”)).DoNotEncode(); 
    } 
} 

Vue:

< %= Html.Grid(ViewData.Model).WithModel(new PersonGridModel(Html)) %> 

RÉFÉRENCE: http://www.jeremyskinner.co.uk/2009/02/22/rewriting-the-mvccontrib-grid-part-2-new-syntax/ (voir comment from Amitabh)

1

Comme une note de côté, changement plus récente, .DoNotEncode() est dépréciée maintenant utiliser .Encode (false)

0

Tout d'abord, grand merci vous à @Andrew for his answer: Amitabh's question et Skinner's answer vraiment résolu mon doute. Quoi qu'il en soit avec ASP.NET MVC 4 J'ai eu du mal à essayer de comprendre pourquoi cela dans un modèle de grille ne fonctionnait pas:

Column.For(hospital => html.ActionLink("View Details", "Show", "Foo")).Encode(false); 

Pourquoi? Parce que je n'ajoute pas nécessaire en utilisant la directive:

using System.Web.Mvc.Html; 

j'avais seulement cela en utilisant proposé par Visual Studio IntelliSense:

using System.Web.Mvc; 

espère que cela aide tout le monde face au même problème!