Folks,Il rasoio non funziona facilmente con Html.ActionLink fortemente tipizzato?
stiamo cercando di utilizzare i metodi di collegamento fortemente tipizzati azione che assomigliano a questo:
Html.ActionLink<HomeController>
nel motore di visualizzazione Razor.
So che non dovremmo usarli tutto il tempo perché ignora i filtri, ecc., Ma il fatto è che li usiamo.
Se provo ad utilizzare questo direttamente a Razor in questo modo:
@Html.ActionLink<HomeController>(c => c.Index, "Home")
ho un errore di:
CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Se si guarda il codice compilato, è perché Razor non è l'analisi questa affermazione come ti aspetteresti. La sorgente compilato, dall'errore che ha la linea di simile a questa:
...
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");
tanta roba omesse per brevità :) Come si può vedere, si divide sul "<" Penso che sia l'interpretazione che come HTML tag, ma non posso essere sicuro.
Ho trovato una soluzione, ma è brutto. Questo funziona:
@{Write(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"));}
Qualcuno sa di un modo migliore per farlo?
Sì, funziona! Ancora non ideale, ma meglio del casino che ho avuto, grazie :) – CubanX
Sfortunatamente (per questo scenario) Razor usa '<' come un personaggio che determina le transizioni e non è possibile supportare sia il markup che il metodo generico in modo univoco. – marcind
Btw, il 'null' nell'esempio è ridondante, il seguente potrebbe funzionare allo stesso modo' @ (Html.ActionLink (c => c.Edit(), "Nuovo")) ' –