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

Asp.net mvc 如何将控制器作为参数传递给其他类方法,asp.net-mvc,asp.net-mvc-4,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&

这是我的代码:

 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);
        }
    }  
公共类StoreController:Controller
{
公共行动结果索引()
{
var page=new PageHelper();
返回页面。页面视图(此);
}
}   
公共类页面助手
{
公共ListDataSouce{get;set;}
公共操作结果页面视图(控制器)
{
var action=controller.RouteData.Values[“action”].ToString();
if(controller.Request.IsAjaxRequest())
//我的问题是它不能调用PartialView或controller.View
返回控制器。部分视图(操作);
返回controller.View(数据源);
}
}  
我无法在
PageView
功能中调用
PartialView
controller.View
。 我怎么能做到

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

视图和PartialView是受保护的内部方法

中的程序集中的任何代码都可以访问该类型或成员 它是声明的,或者来自另一个派生类中的派生类 大会

您应该使您的类PagerHelper从控制器继承

之后,您可以在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);         
    } 

我已经测试了您的项目,现在它可以正常工作。

请格式化您的代码对不起,我尝试格式化我的代码,但为什么不能确定,我已经添加了四个空格。这是因为您的回答描述太少。你不能只是质疑代码。好的,谢谢你的帮助。你能帮我回答这个问题吗?是的,你在找这样的东西吗?真正地关于“类PagerHelper从控制器继承”,在我提交stackoverflow问题之前,我已经测试了它。你能把你的更改发送到我的电子邮件吗。我的电子邮件是:chuanhai@outlook.comI“我试图向您发送邮件,但它返回给我时出错(邮箱不可用)。请记住,您不仅必须确保该类从控制器继承。您还必须将controller.PartialView更改为PartialView而不更改控制器变量。哦,我犯了一个错误!我的电子邮件是:linchuanhai@outlook.com. 对不起。你能再寄一次吗。我会在网上等你。谢谢你的邮件。我看了你的变化。但我喜欢你的改变,我以前也试过。当然现在是成功了。但这是行不通的。你能运行它来查看页面结果吗?