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. 对不起。你能再寄一次吗。我会在网上等你。谢谢你的邮件。我看了你的变化。但我喜欢你的改变,我以前也试过。当然现在是成功了。但这是行不通的。你能运行它来查看页面结果吗?