MvcContrib GridModel: Est-il possible de faire ActionSyntax dans un GridModel J'ai lu cet article et il est assez utile mais je ne peux pas l'appliquer. Je ne sais pas si dans la dernière version de MVCContrib, ils ont supprimé le ".Action ()" car je ne peux pas y accéder.
Existe-t-il un moyen de mettre l'ActionLink du lien d'édition dans un modèle de grille?
Je vous remercie
Réponses:
4 pour la réponse № 1Il semble que l'ancienne méthode ait été supprimée.
Voici comment procéder maintenant:
VB.NET
Tout d'abord, vous passez l'objet Html dans la classe gridmodel via le constructeur, puis vous pouvez l'utiliser à partir de la classe 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
Ensuite, selon vous, vous le passez par le constructeur:
<%=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();
}
}
Vue:
< %= Html.Grid(ViewData.Model).WithModel(new PersonGridModel(Html)) %>
RÉFÉRENCE: http://www.jeremyskinner.co.uk/2009/02/22/rewriting-the-mvccontrib-grid-part-2-new-syntax/ (voir commentaire d'Amitabh)
1 pour la réponse № 2
En remarque, changement plus récent, .DoNotEncode () est désormais obsolète, alors utilisez .Encode (false)
0 pour la réponse № 3
Tout d'abord, merci beaucoup à @Andrew pour sa réponse: La question d'Amitabh et La réponse de Skinner vraiment résolu mon doute. Quoi qu'il en soit avec ASP.NET MVC 4, j'ai eu du mal à comprendre pourquoi cela dans un modèle de grille ne fonctionnait pas:
Column.For(hospital => html.ActionLink("View Details", "Show", "Foo")).Encode(false);
Pourquoi? Parce que je n’ajoutais pas la directive using nécessaire:
using System.Web.Mvc.Html;
Je n'avais que cette utilisation suggérée par Visual Studio Intellisense:
using System.Web.Mvc;
J'espère que cela aide toute personne confrontée au même problème!