当前位置: 代码网 > it编程>编程语言>Asp.net > ASP.NET Core MVC中的局部视图用法

ASP.NET Core MVC中的局部视图用法

2024年05月18日 Asp.net 我要评论
1.什么是局部视图局部视图是在其他视图中呈现的视图。通过执行局部视图生成的html输出呈现在调用视图中。与视图一样,局部视图使用 .cshtml 文件扩展名。当希望在不同视图之间共享网页的可重用部分时

1.什么是局部视图

局部视图是在其他视图中呈现的视图。通过执行局部视图生成的html输出呈现在调用视图中。与视图一样,局部视图使用 .cshtml 文件扩展名。当希望在不同视图之间共享网页的可重用部分时,就可以使用局部视图。

2.什么时候使用局部视图

局部视图是将大视图分成小组件的有效方法。通用的布局元素应在 _layout.cshtml 中指定,非布局可重用内容可以封装成局部视图。

如果一个由几个逻辑部分组成的复杂页面,那么将每个逻辑部分作为局部视图是很有用。布局视图与普通视图之间没有语义差别,它们只是以不同的方式呈现。你可以直接从控制器的 viewresult 返回视图,而这个视图也可以当局部视图来用。视图和局部视图的主要区别是呈现方式不同,局部视图不运行 _viewstart.cshtml,而视图运行。

3.引用局部视图

在视图页面中有几种方法呈现局部视图。最简单的是使用 html.partial ,它通过 @ 前缀来调用并返回 ihtmlstring : @html.partial("authorpartial")。

partialasync 方法对包含异步代码的局部视图是可用的: @await html.partialasync("authorpartial") 。

还可以使用 renderpartial 方法来呈现局部视图。这个方法不返回结果:它将渲染结果直接输出到响应中。正因为它不返回响应,所以必须在 razor 代码块中调用。通用也有一个异步方法 renderpartialasync:

@{
    html.renderpartial("authorpartial");
}

4.发现局部视图

当引用局部视图时,可以通过多种方式找到它的位置:

//以视图名使用当前文件夹下的视图,如果没有找到,则搜索shared 文件夹
@html.partial("viewname")

//这个名称的视图必须在相同文件夹下
@html.partial("viewname.cshtml")

//依据应用根路径定位视图,以“/” 或 “~/” 开头的路径表示应用根路径
@html.partial("~/views/folder/viewname.cshtml")

//使用相对路径
@html.partial("../account/viewname.cshtml")

局部视图可以链接。也就是说,一个局部视图可以调用另一个局部视图(只要不创建循环)。

5.局部视图访问数据

当局部视图被实例化时,它获取父视图的 viewdata 字典的副本。对局部视图中的数据所做的更新不会影响到父视图。局部视图返回时,局部视图中更改的 viewdata 将丢失。

你可以将 viewdatadictionary 的实例传递到局部视图: @html.partial("partialname",customviewdata) 。

也可以将模型传递到局部视图:@html.partial("partialname",viewmodel) 。

也可以将viewdatadictionary 和 模型都传递到视图:@html.partial("partialname",viewmodel,customviewdata) 。

6.简单实战

先创建用到的模型:

namespace mvctest.models
{
    public class article
    {
        public article()
        {
            sections = new list<articlesection>();
        }
        public string authorname { get; set; }
        public list<articlesection> sections { get; set; }
    }

    public class articlesection
    {
        public string title { get; set; }
        public string content { get; set; }
    }
}

然后在控制器中实例化模型:

    public class articlecontroller : controller
    {
        // get: article
        public actionresult index()
        {
            var article = new article();
            article.authorname = "test";
            article.sections.add(new articlesection() { title="title",content="content"});
            return view(article);
        }
    }

父视图:

@model mvctest.models.article

@{
    viewdata["title"] = "index";
}

<h2>@model.authorname</h2>
@html.partial("authorpartial",model.authorname);

@foreach (var section in @model.sections)
{
    @html.partial("articlesection", section);
}

authorpartial.cshtml:

@model string

<h3>@model</h3>

articlesection.cshtml:

@model mvctest.models.articlesection

<h3>@model.title</h3>
<h2>@model.content</h2>

到此这篇关于asp.net core mvc局部视图的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持代码网。

(0)

相关文章:

  • ASP.NET Core配置和管理Web主机

    ASP.NET Core配置和管理Web主机

    1.前言asp.net core应用程序可以配置和启动主机(host)。主机负责应用程序启动和生命周期管理,配置服务器和请求处理管道。主机还可以设置日志记录、依... [阅读全文]
  • ASP.NET中使用用户控件

    ASP.NET中使用用户控件

    一、概述:与web窗体页相同,程序员可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。此外,与web窗体页一样,用户控件可以在第一次请求时被编... [阅读全文]
  • ASP.NET Core中的Options选项模式

    1.前言选项(options)模式是对配置(configuration)的功能的延伸。在12章(asp.net core中的配置二)configuration中有介绍过该功能(绑定…

    2024年05月18日 编程语言
  • .Net设计模式之单例模式(Singleton)

    .Net设计模式之单例模式(Singleton)

    一、动机(motivation)在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。如何绕过常规... [阅读全文]
  • ASP.NET Core中的Configuration配置二

    相关文章asp.net core2.2 中的configuration配置一asp.net core2.2 中的configuration配置二1.内存配置memoryconfig…

    2024年05月18日 编程语言
  • ASP.NET中的Web控件介绍

    一、html控件就是我们通常的说的html语言标记,这些语言标记在已往的静态页面和其他网页里存在,不能在服务器端控制的,只能在客户端通过javascript等程序语言来控制。<…

    2024年05月18日 编程语言

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com