Format ASP.NET MVC3 WebGrid: paramètre
Je suis en train d'utiliser la nouvelle WebGrid dans ASP.NET MVC3 et l'une des colonnes que je veux afficher un ensemble de icônes de lien qui effectue différentes actions (Modifier, Supprimer)...
Pour cet effet, j'ai un HtmlHelper extensions que, fondamentalement, les sorties HTML suivant:
<a href="" title=""><img alt="" src="" /></a>
L'extension renvoie MvcHtmlString et il fonctionne très bien lorsque utilisé dans de Rasoir vues par lui-même..par exemple:
@Html.ActionLinkIconForEditAction("Client", 2)
Le problème est que j'ai besoin d'invoquer cette aide (une fois pour chaque action) dans WebGrid colonne en passant l'ID de l'objet. Le problème que je suis perplexe sur le fait que le compilateur me donne un message d'erreur indiquant qu'il ne peut pas convertir MvcHtmlString (ou "lambda expression" en fonction de l'invocation j'essaie) au Système.Func prévu par le format...
Ainsi, par exemple, cela fonctionne:
grid.Column(header: "", format: @<text>@Html.ActionLinkIconForEditAction("Customer", 2)</text>)
Mais ce n'est pas:
grid.Column(header: "", format: (customer) => @<text>@Html.ActionLinkIconForEditAction("Customer", customer.Id)</text>)
grid.Column(header: "", format: (customer) => Html.ActionLinkIconForEditAction("Customer", customer.Id))
J'obtiens:
Error 4 Argument 3: cannot convert from 'lambda expression' to 'System.Func<dynamic,object>'
ou pour cet appel:
grid.Column(header: "", format: Html.ActionLinkIconForEditAction("Customer", customer.Id)),
J'obtiens:
Error 5 Argument 3: cannot convert from 'System.Web.Mvc.MvcHtmlString' to 'System.Func<dynamic,object>'
Ce qui est bizarre, j'ai d'autres colonnes qui ustilize lambdas, Modèle direct.Les accesseurs de propriété, et même en sortie de Chaîne.("Format")...Ils travaillent tous très bien...
J'ai lu toutes les docs sur la touche Func et ce fil ainsi, et ne peut toujours pas tout à fait 🙂
Quelqu'un peut repérer ce que je fais de mal?
source d'informationauteur zam6ak
Vous devez vous connecter pour publier un commentaire.
Je l'ai eu 🙂 ....
Le problème semble être dans la façon dont C# poignées des objets dynamiques...Beaucoup d'utilisateurs ont un souffle avec cette...
La solution était aussi simple que le moulage d'un type correct sur le paramètre à mon poste assistant...
Donc cela fonctionne:
L'autre astuce est d'utiliser le "construit" dans "le point" de l'objet et de ne pas fournir votre propre..Donc, par exemple, cela ne fonctionne pas:
Beaucoup de lecture, de peaufinage, de l'apprentissage...
J'espère que, la prochaine version aura quelque chose de beaucoup plus facile à utiliser lorsque vous avez besoin d'ajouter du contenu à des colonnes qui ne sont pas directement issus du modèle...
Ce qui concerne
Z...
Cela va fonctionner ,et au-dessus d'un aussi de de travail..
Ici 1er "EditCustomer" est le texte soit visible par les utilisateurs ,
deuxième "EditCustomer" est le nom de l'action que vous souhaitez rediriger ,
et le point est
J'ai dû créer un
WebGrid
dans le code C# et avait pour afficher une colonne spécifique à l'aide de lien hypertexte. Aucune des techniques mentionnées ci-dessus a fonctionné pour moi. Donc, j'ai utiliséMvcHtmlString.create
et passé dans la valeur de retour deString.format
.Remplacer le ( ou les ) à l'intérieur de la chaîne de < ou > respectivement.