Folks,Maszynka do golenia nie działa z łatwością przy użyciu silnie typowanego pliku Html.ActionLink?
staramy się używać silnie wpisane metod działania łącza, które wyglądają tak:
Html.ActionLink<HomeController>
w widoku silnika maszynki.
Wiem, że nie powinniśmy ich używać przez cały czas, ponieważ ignoruje filtry itp., Ale faktem jest, że używamy ich.
Jeśli staram się to wykorzystać bezpośrednio w Razor tak:
@Html.ActionLink<HomeController>(c => c.Index, "Home")
otrzymuję błąd:
CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments
Jeśli spojrzeć na skompilowanego kodu, to dlatego Razor nie jest analizowanie to stwierdzenie, jak można się spodziewać. Skompilowany źródło, z błędem, który ma linię wygląda następująco:
...
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");
wiele rzeczy pominięte dla zwięzłości :) Jak widać, to dzieli go na „<” Myślę, że interpretując to jako HTML tag, ale nie mogę być tego pewien.
Znalazłem obejście, ale jest brzydkie. Działa to:
@{Write(Html.ActionLink<PolicySectionController>(c => c.Edit(null), "New"));}
Czy ktoś wie o lepszy sposób to zrobić?
Tak, to działa! Nadal nie jest idealny, ale lepszy niż bałagan, który miałem, dzięki :) – CubanX
Niestety (dla tego scenariusza) Razor używa '<' jako znaku, który określa przejścia i nie jest możliwe wsparcie zarówno znaczników, jak i metody ogólnej w jednoznaczny sposób. – marcind
Btw, 'null' w tym przykładzie jest zbędny, następująca działałaby równie dobrze' @ (Html.ActionLink (c => c.Edit(), "New")) ' –