asp.net-mvc - 从外部类返回视图
问题描述
在 ASP.NET Core MVC 中返回视图之前,我想在多个客户端之间进行选择。
因此,让 HomeController 具有以下代码:
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
继承自Controller
. 毕竟,它试图返回一个控制器所做的事情。
或者,只需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
. 但是会ViewChooser
从 MVC 框架中解耦。
推荐阅读
- c# - 是否可以将 sql 存储过程重写为 c# 代码?
- r - lapply 将列添加到现有数据框
- linux - mov 0x8(%r14,%r15,8),%rax是什么意思
- java - 如何在 JAVA 中无效的扫描仪输入后重新运行代码
- macos - 如何仅为 .zip 文件提供上下文菜单项?
- java - 如何将Hashmap数组从一个活动发送到android中的另一个活动
- python - 如何消除设置标签文本函数中的多余 if 语句?
- android - 如果用户已经存在,如何检查 SQLite 数据库?
- javascript - Ninja Forms - Backbone / Marionette 上的 Form ready / init 事件
- javascript - 从 $.ajax 站点到 python3 服务器的 Cookie