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 № 1Es 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!