ฉันพยายามสร้างตัวช่วยในการประกาศ Razor ในโฟลเดอร์ App_Code ของฉันสำหรับโครงการ MVC 3 RTM
ปัญหาที่ฉันพบคือส่วนขยาย MVC HtmlHelper เช่น ActionLink ไม่พร้อมใช้งาน นี้เป็นเพราะผู้ช่วยรวบรวมมาจากSystem.Web.WebPages.HelperPage
และแม้ว่ามันเสี่ยงHtml
คุณสมบัติของชนิดมากกว่าSystem.Web.WebPages.HtmlHelper
System.Web.Mvc.HtmlHelper
ตัวอย่างข้อผิดพลาดที่ฉันได้รับคือ:
'System.Web.Mvc.HtmlHelper' ไม่มีคำจำกัดความสำหรับ 'ActionLink' และไม่มีวิธีการขยาย 'ActionLink' ที่ยอมรับอาร์กิวเมนต์แรกของประเภท 'System.Web.Mvc.HtmlHelper' (คุณไม่มีคำสั่งโดยใช้ หรือการอ้างอิงการประกอบ?)
ทางออกเดียวของฉันคือสร้าง HelperPage ของตัวเองและแทนที่คุณสมบัติ Html:
using System.Web.WebPages;
public class HelperPage : System.Web.WebPages.HelperPage
{
// Workaround - exposes the MVC HtmlHelper instead of the normal helper
public static new HtmlHelper Html
{
get { return ((System.Web.Mvc.WebViewPage) WebPageContext.Current.Page).Html; }
}
}
จากนั้นฉันต้องเขียนสิ่งต่อไปนี้ที่ด้านบนของผู้ช่วยทุกคน:
@inherits FunnelWeb.Web.App_Code.HelperPage
@using System.Web.Mvc
@using System.Web.Mvc.Html
@helper DoSomething()
{
@Html.ActionLink("Index", "Home")
}
MVC 3 มันยากขนาดนี้หรือว่าฉันทำอะไรผิด?