Pregunta

MvcContrib GridModel: ¿Es posible hacer ActionSyntax en un GridModel He leído este artículo y es bastante útil, pero no puedo aplicar este. No sé si en el más reciente MVCContrib, quitaron el ".action ()" porque de alguna manera no puedo acceder a este.

¿Hay alguna manera puedo poner el ActionLink del enlace de edición en un modelo de rejilla?

Gracias

¿Fue útil?

Solución

Parece que el viejo método se ha eliminado.

He aquí cómo hacerlo 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

A continuación, en la vista 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();
    }
}

Ver:

< %= 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 comentario de Amitabh )

Otros consejos

Como nota al margen, el cambio más reciente, .DoNotEncode () es obsoleto ahora, para usar .Encode (falso)

En primer lugar, muchas gracias a @ Andrew por su respuesta : de Amitabh pregunta y la respuesta de Skinner realmente resuelve 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 directiva using necesaria:

using System.Web.Mvc.Html;

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

using System.Web.Mvc;

Espero que ayuda a las personas que enfrentan el mismo problema!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top