/ / Bearbeiten Sie Links in GridModel (MVCContrib) - asp.net-mvc, model, grid, mvccontrib, html.actionlink

Bearbeiten Sie Links in GridModel (MVCContrib) - asp.net-mvc, Modell, Grid, mvccontrib, html.actionlink

MvcContrib GridModel: Ist es möglich, ActionSyntax in einem GridModel auszuführen Ich habe diesen Artikel gelesen und er ist sehr nützlich, aber ich kann das nicht anwenden. Ich weiß nicht, ob in der neuesten MVCContrib das ".Action ()" entfernt wurde, weil ich irgendwie nicht darauf zugreifen kann.

Gibt es eine Möglichkeit, den ActionLink des Bearbeitungslinks in ein Gittermodell zu integrieren?

Vielen Dank

Antworten:

4 für die Antwort № 1

Es scheint, dass die alte Methode entfernt wurde.

Hier ist, wie es jetzt geht:

VB.NET

Zuerst übergeben Sie das Html-Objekt über den Konstruktor an die gridmodel-Klasse. Anschließend können Sie es innerhalb der gridmodel-Klasse verwenden.

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 übergeben Sie es Ihrer Ansicht nach durch 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();
}
}

Aussicht:

< %= 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/ (sehen Kommentar von Amitabh)


1 für die Antwort № 2

Als letzte Anmerkung, neuere Änderung, ist .DoNotEncode () jetzt veraltet, verwenden Sie also .Encode (false).


0 für die Antwort № 3

Erstmal vielen Dank an @Undrew für seine Antwort: Amitabhs Frage und Antwort von Skinner wirklich meinen Zweifel gelöst. Mit ASP.NET MVC 4 war es jedenfalls schwierig, herauszufinden, warum dies in einem Grid-Modell nicht funktioniert:

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

Warum? Weil ich die notwendige using-Direktive nicht hinzugefügt habe:

using System.Web.Mvc.Html;

Ich hatte nur die Verwendung von Visual Studio Intellisense:

using System.Web.Mvc;

Ich hoffe es hilft jedem, der das gleiche Problem hat!