2.将视图添加到 ASP.NET Core MVC 应用
在本部分中,将修改 helloworldcontroller 类,进而使用 razor 视图文件来顺利封装为客户端生成 html 响应的过程。
当前,index 方法返回带有在控制器类中硬编码的消息的字符串。 在 helloworldcontroller 类中,将 index 方法替换为以下代码:
public iactionresult index()
{
return view();
}
上面的代码调用控制器的 view 方法。 它使用视图模板来生成 html 响应。 控制器方法(亦称为“操作方法”,如上面的 index 方法)
通常返回 iactionresult(或派生自 actionresult 的类),而不是 string 等类型。
添加视图
右键单击“视图”文件夹,然后单击“添加”>“新文件夹”,并将文件夹命名为“helloworld”。
右键单击“views/helloworld”文件夹,然后单击“添加”>“新项”。
在“添加新项 - mvcmovie”对话框中
在右上角的搜索框中,输入“视图”
选择“razor 视图”
保持“名称”框的值:index.cshtml。
选择“添加”
使用以下内容替换 razor 视图文件 views/helloworld/index.cshtml 的内容:
@{
viewdata["title"] = "index";
}
<h2>index</h2>
<p>hello from our view template!</p>
导航到 https://localhost:xxxx/helloworld。 helloworldcontroller 中的 index 方法作用不大;它运行 return view();
语句,指定此方法应使用视图模板文件来呈现对浏览器的响应。 因为没有显式指定视图模板文件的名称,所以 mvc 默认使用
/views/helloworld 文件夹中的 index.cshtml 视图文件。 下面图片显示了视图中硬编码的 字符串“hello from our view template!”
更改视图和布局页面
选择菜单链接(“mvcmovie”、“首页”和“隐私”)。 每页显示相同的菜单布局。 菜单布局是在 views/shared/_layout.cshtml 文件中实现的。
打开 views/shared/_layout.cshtml 文件。
布局模板使你能够在一个位置指定网站的 html 容器布局,然后将它应用到网站中的多个页面。 查找 @renderbody() 行。
renderbody 是显示创建的所有特定于视图的页面的占位符,已包装在布局页面中。 例如,如果选择“隐私”链接
,views/home/privacy.cshtml 视图将在 renderbody 方法中呈现。
更改布局文件中的标题、页脚和菜单链接
在标题和页脚元素中,将 mvcmovie 更改为 movie app。
将定位点元素
<a class="navbar-brand" asp-area="" asp-controller="home" asp-action="index">mvcmovie</a>
更改为 <a class="navbar-brand" asp-controller="movies" asp-action="index">movie app</a>
在前面的标记中,省略了 asp-area 定位点标记帮助程序属性,因为此应用未使用区域。
说明:movies 控制器尚未实现。 此时,movie app 链接不起作用。
完整的 helloworldcontroller.cs 文件如下所示:
using microsoft.aspnetcore.mvc;
using system.text.encodings.web;
namespace mvcmovie.controllers
{
public class helloworldcontroller : controller
{
public iactionresult index()
{
return view();
}
public iactionresult welcome(string name, int numtimes = 1)
{
viewdata["message"] = "hello " + name;
viewdata["numtimes"] = numtimes;
return view();
}
}
}
创建一个名为 views/helloworld/welcome.cshtml 的 welcome 视图模板。
使用以下内容替换 views/helloworld/welcome.cshtml 的内容:
@{
viewdata["title"] = "welcome";
}
<h2>welcome</h2>
<ul>
@for (int i = 0; i < (int)viewdata["numtimes"]; i++)
{
<li>@viewdata["message"]</li>
}
</ul>
保存更改并浏览到以下 url:
https://localhost:xxxx/helloworld/welcome?name=rick&numtimes=4
数据取自 url,并传递给使用 mvc 模型绑定器的控制器。 控制器将数据打包到 viewdata 字典中,并将该对象传递给视图。
然后,视图将数据作为 html 呈现给浏览器。
在上面的示例中,我们使用 viewdata 字典将数据从控制器传递给视图。
推荐阅读
-
asp.net core系列 41 Web 应用 MVC视图
-
3.将模型添加到 ASP.NET Core MVC 应用
-
2.将视图添加到 ASP.NET Core MVC 应用
-
「B/S端开发」如何将DevExtreme添加到ASP.NET Core Angular应用 ASP.NETASP.NET Core AngularDevExtreme
-
asp.net core系列 41 Web 应用 MVC视图
-
2.将视图添加到 ASP.NET Core MVC 应用
-
3.将模型添加到 ASP.NET Core MVC 应用
-
「B/S端开发」如何将DevExtreme添加到ASP.NET Core Angular应用 ASP.NETASP.NET Core AngularDevExtreme