2010-01-10 4 views

Antwort

4

Es scheint, dass die alte Methode entfernt wurde.

Hier ist, wie es jetzt tun:

VB.NET

Zuerst passieren Sie das HTML-Objekt in die gridmodel Klasse durch den Konstruktor, dann können Sie es aus der gridmodel Klasse.

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 

Dann Ihrer Ansicht nach passieren Sie es über den Konstruktor:

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

Ausblick:

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

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

1

Als Randbemerkung, neuere Veränderung, .DoNotEncode() ist veraltet, so verwenden .Encode (false)

0

Zuerst großer Dank Sie an @Andrew for his answer: Amitabh's question und Skinner's answer wirklich meine Zweifel gelöst. Auf jeden Fall mit ASP.NET MVC 4 hatte ich eine harte Zeit, um herauszufinden, warum dies in einem Grid Modell nicht funktioniert:

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

Warum? Weil ich nicht das notwendige using-Direktive hinzugefügt wurde:

using System.Web.Mvc.Html; 

hatte ich nur das von Visual Studio Intellisense vorgeschlagen werden:

using System.Web.Mvc; 

Hoffen, dass es jemand hilft das gleiche Problem!