是否可以向ViewPage类添加自定义帮助器对象,因此我可以在视图页面标记中使用它(就像Html,Url和Ajax一样)?此辅助对象还需要来自自定义控制器的一些数据。 (这应该可以通过我认为的ViewContext属性)
答案 0 :(得分:5)
创建新类,从System.Web.Mvc.ViewPage派生它,为自定义助手添加新属性并覆盖InitHelpers()方法。例如:
public class CustomViewPage : System.Web.Mvc.ViewPage
{
public YourCustomHelper CustomHelper
{
get;
set;
}
public virtual void InitHelpers()
{
CustomHelper = new YourCustomHelper(ViewContext);
base.InitHelpers();
}
}
public class YourCustomHelper
{
public YourCustomHelper(ViewContext viewContext)
{
if (viewContext == null) {
throw new ArgumentNullException("viewContext");
}
ViewContext = viewContext;
}
public ViewContext ViewContext
{
get;
private set;
}
}
答案 1 :(得分:1)
您可以使用扩展方法轻松完成此操作(现在可在.Net 3.5中使用)考虑这样的类:
public static class ViewPageExtensions
{
public static string DoSomething(this ViewPage page, string input)
{
// Do something clever with the page
}
}
只要您在正在使用的ViewPage.aspx上导入的命名空间可以看到ViewPageExtensions
类,就应该可以直接访问DoSomething
方法,而无需引用到ViewPageExtensions类。