欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

2.将视图添加到 ASP.NET Core MVC 应用

程序员文章站 2022-06-28 23:25:48
在本部分中,将修改 HelloWorldController 类,进而使用 Razor 视图文件来顺利封装为客户端生成 HTML 响应的过程。 当前,Index 方法返回带有在控制器类中硬编码的消息的字符串。 在 HelloWorldController 类中,将 Index 方法替换为以下代码: ......

在本部分中,将修改 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 字典将数据从控制器传递给视图。