ASP.NET Core MVC 中的视图发现

ASP.NET Core MVC 中有提供了几个 View()的重载方法。 如果我们使用下面提供 View()的重载方法,它将查找与 Action 方法同名的视图文件。

  • View()
  • View(object model)

例如,我们从HomeControllerDetails的 Action 方法返回一个 View()。因此,默认情况下,MVC 在“Views / Home”文件夹中查找名为 Details.cshtml 的视图文件。

public class HomeController : Controller
{
public ViewResult Details()
{
return View();
}
}

View(string viewName) 方法

如果您不喜欢此默认约定,则可以使用View(string viewName)方法的重载版本,该方法将 viewName作为参数,以查找具有您自己的自定义名称的视图文件。

在以下示例中,MVC 查找名为 **“Test.cshtml”而不是“Details.cshtml”**的视图文件。如果我们没有指定视图名称,它会查找 “Details.cshtml”

public class HomeController : Controller
{
public ViewResult Details()
{
return View("Test");
}
}

指定视图文件路径

使用此重载方法,我们可以指定视图名称视图文件路径。在以下示例中,我们指定了视图文件的绝对路径。因此,在这种情况下,MVC 在“MyViews”文件夹中查找名为“Test.cshtml”的视图文件。如果我们没有指定视图文件的路径,默认情况下,MVC 会在“Views / Home”文件夹中查找“Details.cshtml”文件。使用绝对路径时,必须加上.cshtml 扩展名。

public class HomeController : Controller
{
public ViewResult Details()
{
return View("MyViews/Test.cshtml");
}
}

请注意:使用绝对路径,会项目的根目录开始搜索,我们可以使用**/或〜/**。所以下面 3 行代码做的事情是一样的:

return View("MyViews/Test.cshtml");
return View("/MyViews/Test.cshtml");
return View("~/MyViews/Test.cshtml");

相对视图文件路径

指定视图文件路径时,我们也可以使用相对路径。使用相对路径,我们不指定文件扩展名 .cshtml。在以下示例中,MVC 在“Views / Test”文件夹中查找 Update.cshtml 文件。

public class HomeController : Controller
{
public ViewResult Details()
{
return View("../Test/Update");
}
}

如果你要的返回值在文件夹层次结构中超过了 2 个深度,请使用../两次,如下所示。在下面的例子中,MVC 查找“Details.cshtml”在“MyViews”文件夹中的根目录

public class HomeController : Controller
{
public ViewResult Details()
{
return View("../../MyViews/Details");
}
}

其他 view()重载方法

重载方法 描述
View(object model) 使用此重载方法将模型数据从控制器传递到视图。我们将在下一个视频中讨论从控制器传递数据到视图
View(string viewName, object model) 传递视图名称和模型数据。

下一节:将数据从 Controller 传递到 ASP.NET Core MVC 中的 View

欢迎添加个人微信号:Like若所思。

欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!

ASP.NET Core MVC 中自定义视图的更多相关文章

  1. 007.Adding a view to an ASP.NET Core MVC app -- 【在asp.net core mvc中添加视图】

    Adding a view to an ASP.NET Core MVC app 在asp.net core mvc中添加视图 2017-3-4 7 分钟阅读时长 本文内容 1.Changing vi ...

  2. asp.net core mvc中自定义ActionResult

    在GitHub上有个项目,本来是作为自己研究学习.net core的Demo,没想到很多同学在看,还给了很多星,所以觉得应该升成3.0,整理一下,写成博分享给学习.net core的同学们. 项目名称 ...

  3. 数据呈现到 ASP.NET Core MVC 中展示

    终于要将数据呈现到 ASP.NET Core MVC 中的 视图 上了 将数据从控制器传递到视图的三种方法 在 ASP.NET Core MVC 中,有 3 种方法可以将数据从控制器传递到视图: 使用 ...

  4. ASP.NET Core MVC 中的 [Controller] 和 [NonController]

    前言 我们知道,在 MVC 应用程序中,有一部分约定的内容.其中关于 Controller 的约定是这样的. 每个 Controller 类的名字以 Controller 结尾,并且放置在 Contr ...

  5. 006.Adding a controller to a ASP.NET Core MVC app with Visual Studio -- 【在asp.net core mvc 中添加一个控制器】

    Adding a controller to a ASP.NET Core MVC app with Visual Studio 在asp.net core mvc 中添加一个控制器 2017-2-2 ...

  6. 008.Adding a model to an ASP.NET Core MVC app --【在 asp.net core mvc 中添加一个model (模型)】

    Adding a model to an ASP.NET Core MVC app在 asp.net core mvc 中添加一个model (模型)2017-3-30 8 分钟阅读时长 本文内容1. ...

  7. ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)

    ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...

  8. ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost

    我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...

  9. ASP.NET Core MVC中的IActionFilter.OnActionExecuted方法执行时,Controller中Action返回的对象是否已经输出到Http Response中

    我们在ASP.NET Core MVC项目中有如下HomeController: using Microsoft.AspNetCore.Mvc; namespace AspNetCoreActionF ...

随机推荐

  1. win7 下docker 镜像加速

    打开 Kitematic 运行 docker cli 注册镜像 https://www.daocloud.io/mirror#accelerator-doc 上有镜像地址 sudo sed -i &q ...

  2. Flutter基础系列之混合开发(二)

    1.混合开发的场景 1.1作为独立页面加入 这是以页面级作为独立的模块加入,而不是页面的某个元素. 原生页面可以打开Flutter页面 Flutter页面可以打开原生页面 1.2作为页面的一部分嵌入 ...

  3. fiddler抓包-8-工作中get到的断点使用

    前言小伙伴有没有遇到这样的情况呢?测试中某个页面传参错误导致关联的功能点没发测试呢?比如APP页面中点击A商品但却跳转到了B商品的页面中,一看原来是商品的id传错了,开发是写死了... 这只是个例子. ...

  4. Linux网络编程基础API

    第5章 Linux网络编程基础API 探讨Linux网络编程基础API与内核中TCP/IP协议族之间的关系,并未后续章节提供编程基础.从3个方面讨论Linux网络API. socket地址API.so ...

  5. 通过requirements.txt文件创建虚拟环境副本

    1.首先在原来的环境中生成一个需求文件requirements.txt,用于记录所有依赖包及其精确的版本号. (venv) $ pip freeze >requirements.txt 2.创建 ...

  6. LeetCode 155:最小栈 Min Stack

    LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈. push(x) -- 将元素 x 推入栈中. pop() -- ...

  7. NXP官方ddr_stress_tester工具使用

    1.前言 NXP官方提供了一个DDR初始化工具,名称为ddr_stress_tester,该工具具有以下特点: 该工具能通过USB OTG接口与目标板进行连接,通过USB OTG接口完成DDR的初始化 ...

  8. JDBC与Druid简单介绍及Druid与MyBatis连接数据库

    序言 java程序与数据建立连接,首先要从jdbc说起,然后直接上阿里认为宇宙最好的数据库连接池druid,然后再说上层程序对象与数据源映射关联关系的orm-mybatis. JDBC介绍 JDBC( ...

  9. win7搭建本地SonarQube环境进行c#代码分析

    1.SonarQube需要正常运行,首先需要安装Java环境,我这里安装的是jdk-8u181版本,可以在下面网站找适的版本去下载安装 https://www.oracle.com/technetwo ...

  10. centos 7 防火墙相关操作

    centos 7 防火墙相关操作 CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewal ...