Les gens,
Nous essayons d'utiliser les méthodes de lien d'action fortement typées qui ressemblent à ceci :
Html.ActionLink<HomeController>
dans le moteur de vue Razor.
Je sais que nous ne devrions pas les utiliser tout le temps car ils ignorent les filtres, etc. mais le fait est que nous les utilisons.
Si j'essaie de l'utiliser directement dans Razor comme ceci :
@Html.ActionLink<HomeController>(c => c.Index, "Home")
Je reçois une erreur de :
CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Si vous regardez le code compilé, c'est parce que Razor n'analyse pas cette déclaration comme on pourrait s'y attendre. La source compilée, de l'erreur qui a la ligne ressemble à ceci :
...
Line 101: #line 13 "C:\dev\TheNetwork\POC\Web\Views\Policy\Edit.cshtml"
Line 102: Write(Html.ActionLink);
Line 103:
Line 104:
Line 105: #line default
Line 106: #line hidden
Line 107: WriteLiteral("<PolicySectionController>(c => c.Edit(null), "New\")\r\n\r\n\r\n\r\n");
Beaucoup de choses ont été omises pour des raisons de brièveté :) Comme vous pouvez le voir, il le divise sur le "<" Je pense qu'il l'interprète comme une balise HTML, mais je ne suis pas sûr.
J'ai trouvé une solution de contournement, mais c'est moche. Cela fonctionne :
@{Write(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"));}
Quelqu'un connaît-il une meilleure façon de procéder ?