Asp.net mvc 从外部类返回视图
在ASP.NET Core MVC中返回视图之前,我想在多个客户端之间进行选择 因此,假设有一个具有以下代码的HomeController:Asp.net mvc 从外部类返回视图,asp.net-mvc,asp.net-core-mvc,Asp.net Mvc,Asp.net Core Mvc,在ASP.NET Core MVC中返回视图之前,我想在多个客户端之间进行选择 因此,假设有一个具有以下代码的HomeController: public class HomeController : Controller { public virtual IActionResult Index() { return View(); } } 现在我有多个客户端,我想决定返回哪个视图。但不是在这个地方,所以我想把它写在另一个文件中 所以我的问题是,有没有这
public class HomeController : Controller
{
public virtual IActionResult Index()
{
return View();
}
}
现在我有多个客户端,我想决定返回哪个视图。但不是在这个地方,所以我想把它写在另一个文件中
所以我的问题是,有没有这样的可能:
public class HomeController : Controller
{
public virtual IActionResult Index()
{
ViewChooser vc = new ViewChooser();
return vc.GetNextView();
}
}
public class ViewChooser
{
public IActionResult GetNextView()
{
// do some stuff and then..
return View("aaaa");
}
}
类“ViewChooser”不是从Controller继承的,所以我不能只编写return View()
我之所以希望这样工作,是因为我希望在不更改URL的情况下在多个工作流之间进行选择。(否则,这些区域将是解决我问题的可能方法。)
因此,如果客户A致电www.myserver.com/function1,他将获得另一个功能并以客户B的身份查看
有什么想法吗?还是我离解决方案很远
关于一个选项是让
视图选择器
从控制器
继承。毕竟,它试图返回一个视图,而这正是控制器所做的
或者,只需让ViewChooser
返回视图的名称:
public class ViewChooser
{
public string GetNextView()
{
// do some stuff and then..
return "aaaa";
}
}
您的控制器可以将其用于视图选择:
public class HomeController : Controller
{
public virtual IActionResult Index()
{
ViewChooser vc = new ViewChooser();
return View(vc.GetNextView());
}
}
这意味着
GetNextView()
必须始终返回有效的命名视图,而不是另一种IActionResult
。但是会将视图选择器与MVC框架分离。如果有固定数量的客户端,比如“5个客户端”,那么可以创建5个不同的ActionResult方法,这些方法将返回5个不同的视图。之后,您可以创建一个自定义属性,在其中编写获取客户机信息的逻辑。您可以将此自定义属性放置在每个ActionResult方法上