2010-01-10 12 views

Respuesta

4

Parece que se ha eliminado el método anterior.

Así es como hay que hacer ahora:

VB.NET

En primer lugar, se pasa el objeto HTML en la clase gridmodel a través del constructor, a continuación, puede utilizarlo dentro de la clase 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 

Luego, en su opinión, que se pasa a través del constructor:

<%=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(); 
    } 
} 

Vista:

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

REFERENCIA: http://www.jeremyskinner.co.uk/2009/02/22/rewriting-the-mvccontrib-grid-part-2-new-syntax/ (ver comment from Amitabh)

1

Como nota al margen, el cambio más reciente, .DoNotEncode() está en desuso ahora, para utilizar .Encode (falso)

0

En primer lugar, gran agradecimiento usted a @Andrew for his answer: Amitabh's question y Skinner's answer realmente resolvió mi duda. De todos modos con ASP.NET MVC 4 que tenía un tiempo difícil tratando de averiguar por qué esto en un modelo de cuadrícula no funcionaba:

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

¿Por qué? Porque no estaba añadiendo la necesaria directiva using:

using System.Web.Mvc.Html; 

Había sólo que esta utilizando sugerido por Visual Studio IntelliSense:

using System.Web.Mvc; 

creo que sirve cualquier persona que enfrenta el mismo problema!