如何将控制器作为参数传递给其他类方法

时间:2014-05-12 09:09:23

标签: asp.net-mvc asp.net-mvc-4

这是我的代码:

 public class StoreController:Controller
    {
        public ActionResult Index()
        {
            var page=new PageHelper<Store>();          
            return page.PageView(this);
        }
    }   
    public class PageHelper<T>
    {
        public List<T>DataSouce {get;set;}  
        public ActionResult PageView(Controller controller)
        {
            var action = controller.RouteData.Values["action"].ToString();
            if (controller.Request.IsAjaxRequest())
                //my question is it can not call the PartialView or controller.View 
                return controller.PartialView(action);               
            return controller.View(DataSource);
        }
    }  

我无法在PartialView函数中调用controller.ViewPageView。 我该怎么做?

现在这段代码:&#34; controller.PartialView(action);&#34;在PageView函数中将编译 错误。为什么不能调用View()或PartialView()?

1 个答案:

答案 0 :(得分:1)

View和PartialView是受保护的内部方法。

  

可以通过程序集中的任何代码访问类型或成员   声明它,或从另一个派生类中声明它   组装

你应该让你的班级PagerHelper继承自Controller。

之后你可以在你的PageView方法中调用

public ActionResult PageView(Controller controller)
    {        
        ViewBag.DataSource = DataSource;
        ViewBag.PageHtml = PageHtml;
        ViewBag.AjaxPageHtml = AjaxPageHtml;

        if (controller.Request.IsAjaxRequest())
            return PartialView(AjaxTag);          
        var action = controller.RouteData.Values["action"].ToString();
        return View(action);         
    } 

我已经测试了你的项目,现在它可以运行了。