加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

这是从ASP.NET MVC控制器返回不同视图的正确模式吗?

发布时间:2020-12-16 09:58:15 所属栏目:asp.Net 来源:网络整理
导读:我有一个具有公共“最终用户”模式和“后台”模式的应用程序.两种“模式”几乎共享相同的控制器逻辑,但这些不同“模式”的用户界面完全不同. 使用第一次创建项目时获得的开箱即用的默认路由,我有类似以下内容: Controllers HomeController.csViews BackOff
我有一个具有公共“最终用户”模式和“后台”模式的应用程序.两种“模式”几乎共享相同的控制器逻辑,但这些不同“模式”的用户界面完全不同.

使用第一次创建项目时获得的开箱即用的默认路由,我有类似以下内容:

Controllers
  HomeController.cs

Views
  BackOffice
    Index.aspx
  Public
    Index.aspx

Shared
  BackOfficeSite.Master
  PublicSite.Master

在我的HomeController.cs中,我的逻辑看起来像这样:

public ActionResult Index()
{
  var devices = DeviceRepository.FindDevicesByCustomer(100);

  if(IsBackOffice()) 
  {
     return View(@"~/Views/BackOffice/Index.aspx",devices);
  }

  return View(@"~/Views/Public/Index.aspx",devices);
}

这是正确的做法,还是我自己挖一个反模式的洞?

我正在使用ASP.NET MVC 2.

解决方法

在视图文件夹中,您可以将BackOffice和Public放在Views / Home文件夹中

Views
    Home
      BackOffice
        Index.aspx
      Public
        Index.aspx

并且您的返回视图应该如下所示

return View("BackOffice/Index",devices);

return View("Public/Index",devices);

控制器将始终首先在控制器的View Name文件夹中查找View.如果您的Controller是HomeController,它将始终在Views / Home文件夹中查找View.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读