1、修改control
public class HomeController : Controller
{
private readonly IStudentRepository studentRepository;
public HomeController(IStudentRepository _studentRepository)
{
studentRepository = _studentRepository;
}
public string Index(int id)
{
return studentRepository.GetStudent(id).Name;
}
public IActionResult Detail()
{
Student student = studentRepository.GetStudent(1);
return View(student);
}
}
直接运行,会发生下面报错,原因是没有发现相应的视图文件
2、添加视图
右键view方法,点击添加视图,添加自己需要的视图类型,生成如下目录
直接运行,结果如下
3、自定义视图
我们可以看一下view方法里面的重载
(1)不输入参数
(2)输入视图名
(3)输入视图名和模型
(4)输入模型
我们前面提到的是输入模型,因为没运用到模型,所以修改下面方法,运行无参数的方法,得到的是同一样的结果,
public IActionResult Detail()
{
return View();
}
我们重点讲一下输入视图名,这里我们加入一些其他的视图,目的是修改参数内容,可以获取不同路径的视图的功能
每个视图做类似下面的前端代码,这样返回结果我们好知道是什么
<html>
<head>
<title></title>
</head>
<body>
<h1>文件是Views/Home/text.cshtml</h1>
</body>
</html>
测试下面方式获取文件
(1)直接填写文件名称,不带路径,不带后缀,该方法只能获取路由路径文件夹下面的同路径文件
return View("text");
(2)直接填写文件名称,不带路径,带后缀,结果报错
return View("text.html");
(3)加入路径,带后缀
return View("ViewsText/text.cshtml");
(4)加入路径,不带后缀,结果报错
return View("ViewsText/text");
(5)加入绝对路径,~相当于根目录,带后缀
return View("~/ViewsText/text.cshtml");
(6)加入绝对路径,不带后缀,结果报错
return View("~/ViewsText/text");
(7)加入绝对路径,减少文件路径,不带后缀,结果报错
return View("~/text.cshtml");
(8)加入相对路径,不带后缀
return View("../../ViewsText/text");
(8)加入相对路径,带后缀,结果报错
return View("../../ViewsText/text.cshtml");
(9)加入相对路径,不带后缀,更换路径,由此和(7)可知相对路径加…就是从路由路径往前开始退,有多少个…就退多少
return View("../Text/text");
4、总结
- 视图文件具有.cshtml的拓展名
- 试图文件是带有嵌入Razor标记的HTML模板
- 可能包含Controller提供给它的Model的业务数据
- View()或View(object model):查找与操作方法同名的视图文件
- View(string viewName)
- 可查询自定义名称的视图文件
- 可以指定视图名称或视图文件路径
- 视图文件路径可以是绝对路径,也可以是相对路径
- 绝对路径必须指定.cshtml拓展名
- 使用相对路径时,不用带拓展名.cshtml
- View(string viewName,object model),结合上述两种