最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在ASP.NET Core中使用ViewComponent

 更新時(shí)間:2021年04月14日 09:35:09   作者:HueiFeng  
這篇文章主要介紹了如何在ASP.NET Core中使用ViewComponent,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下

前言

在之前的開發(fā)過程中,我們對(duì)于應(yīng)用或者說使用一些小的組件,通常使用分布頁(partial view),再往前在Web Form中我們會(huì)進(jìn)行應(yīng)用WEB Control,好吧提及一個(gè)關(guān)鍵性代碼TagPrefix:TagName,通過這種的標(biāo)記我們便可以在我們web form中進(jìn)行引入我們的組件,當(dāng)然自從.NET MVC之后呢,就已經(jīng)沒有了WebControl,而對(duì)于.NET Core后,又多了一個(gè)特性ViewComponent

對(duì)于ViewComponent看起來它類似于小的控制器,而對(duì)于我們小的組件或者小部分通用型功能,可通過ViewComponent進(jìn)行實(shí)現(xiàn),比如說留言欄、菜單等等。

ViewComponent是由兩部分組成,一部分是類(通常該類集成與ViewComponent),而另外一部分是視圖(Razor和普通的View一樣),當(dāng)然ViewComponent同樣也支持POCO,不繼承ViewComponent,但類名以ViewComponent結(jié)尾。

自定義一個(gè)組件

創(chuàng)建ViewComponent的方式有三種,如下所示:

  • 繼承自ViewComponent
  • 使用ViewComponent特性
  • 創(chuàng)建一個(gè)類,以ViewComponent結(jié)尾

需要注意的是View Component必須是公共的(public),非嵌套,非抽象類。

對(duì)于View Component我們有了一個(gè)基本的認(rèn)識(shí),下面的話創(chuàng)建一個(gè)ButtonViewComponent示例,作為我們的參考:

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;

namespace ViewComponentDemo.ViewComponents
{
    public class ButtonViewComponent : ViewComponent
    {
        public async Task<IViewComponentResult> InvokeAsync()
        {
            return View();
        }
    }
}

在視圖頁面中調(diào)用該組件:

@await Component.InvokeAsync("Button")

對(duì)于ViewComponent同樣也是跟Controller一樣,進(jìn)行通過我們服務(wù)端特性進(jìn)行視圖操作,再或者說渲染,比如下面我們要傳遞參數(shù),進(jìn)行修改我們的Button的樣式:

我們修改一下原方法,同時(shí)增加一個(gè)Enum類型,進(jìn)行樣式的選擇

@await Component.InvokeAsync("Button",ButtonType.Success)
 public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Success)
 {
        ViewBag.Type = type;
        //return View("name",model);//允許強(qiáng)類型
        return View();
 }
 
    public enum ButtonType
    {
        Default,
        Primary,
        Success,
        Info,
        Warning,
        Danger,
        Link
    }

ViewComponent特性

因?yàn)樵谖覀兊囊晥D關(guān)系綁定中,我們更多的是依賴于命名式綁定,而當(dāng)我們組件的命名與類命名不一致時(shí),會(huì)導(dǎo)致我們搜索不到相關(guān)的視圖,當(dāng)然我們可能會(huì)在使用過程中對(duì)其應(yīng)用不一樣的Name,而對(duì)于這種情況,我們可以使用ViewCompoentAttribute
進(jìn)行標(biāo)記,通過這種方式我們可進(jìn)行視圖的綁定,如下所示:

    [ViewComponent(Name ="Button")]
    public class ButtonTest : ViewComponent
    {
        public async Task<IViewComponentResult> InvokeAsync(ButtonType type = ButtonType.Success)
        {
            ViewBag.Type = type;
            return View();
        }
    }

如上代碼雖然ButtonTest的命名引發(fā)了視圖綁定失敗(不能進(jìn)行使用Button),而我們將其加入一個(gè)標(biāo)記,將Name命名為Button這樣彌補(bǔ)了我們命名的不一致行為。

Taghelper方式

通過@addTagHelper指定進(jìn)行注冊(cè)包含組件的程序集,組件位于ViewComponentDemo程序集中

@addTagHelper *, ViewComponentDemo

切記這種方式有一個(gè)弊端,參數(shù)不是可選性參數(shù),也就是你必須把每一個(gè)參數(shù)都進(jìn)行顯示的調(diào)用一下,否則將導(dǎo)致搜索不到.

<vc:button type="@ButtonType.Success"></vc:button>

在如上代碼中type為我們的方法參數(shù)。

Reference

Demo:https://github.com/hueifeng/BlogSample/tree/master/src/ViewComponentDemo

以上就是如何在ASP.NET Core中使用ViewComponent的詳細(xì)內(nèi)容,更多關(guān)于ASP.NET Core中使用ViewComponent的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 使用DataTable.Select 方法時(shí),特殊字符的轉(zhuǎn)義方法分享

    使用DataTable.Select 方法時(shí),特殊字符的轉(zhuǎn)義方法分享

    常見的特殊字符 基本都能轉(zhuǎn)義 ,不知道還有沒有漏掉的 ,目前使用正常 ,有需要的朋友可以參考一下
    2013-10-10
  • .NET使用Collections.Pooled提升性能優(yōu)化的方法

    .NET使用Collections.Pooled提升性能優(yōu)化的方法

    這篇文章主要介紹了.NET使用Collections.Pooled性能優(yōu)化的方法,今天要給大家分享類庫Collections.Pooled,它是通過池化內(nèi)存來達(dá)到降低內(nèi)存占用和GC的目的,另外也會(huì)帶大家看看源碼,為什么它會(huì)帶來這些性能提升,一起通過本文學(xué)習(xí)下吧
    2022-05-05
  • .NET垃圾回收器原理及使用

    .NET垃圾回收器原理及使用

    這篇文章介紹了.NET垃圾回收器原理及使用方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • 在阿里云函數(shù)計(jì)算上部署.NET Core 3.1的方法

    在阿里云函數(shù)計(jì)算上部署.NET Core 3.1的方法

    這篇文章主要介紹了在阿里云函數(shù)計(jì)算上部署.NET Core 3.1的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • ASP.NET mvc4中的過濾器的使用

    ASP.NET mvc4中的過濾器的使用

    本篇文章主要介紹了ASP.NET mvc4中的過濾器的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • ASP.NET Core快速入門之實(shí)戰(zhàn)篇

    ASP.NET Core快速入門之實(shí)戰(zhàn)篇

    這篇文章主要介紹了ASP.NET Core快速入門之實(shí)戰(zhàn)篇,對(duì)跨平臺(tái)框架感興趣的同學(xué),可以參考下
    2021-04-04
  • ASP.NET Core使用NLog記錄日志

    ASP.NET Core使用NLog記錄日志

    這篇文章介紹了ASP.NET Core使用NLog記錄日志的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • .net?core?刪除字符串最后一個(gè)字符的七大類N種實(shí)現(xiàn)方式(總結(jié)篇)

    .net?core?刪除字符串最后一個(gè)字符的七大類N種實(shí)現(xiàn)方式(總結(jié)篇)

    本文詳細(xì)介紹了七大類、N種不同的方法來刪除字符串的最后一個(gè)字符,涵蓋了從簡單的字符串方法到使用StringBuilder、數(shù)組操作、Linq以及正則表達(dá)式等多種技術(shù)手段,本文給大家介紹.net?core刪除字符串最后一個(gè)字符,感興趣的朋友一起看看吧
    2024-10-10
  • asp.net 數(shù)據(jù)庫連接池淺析

    asp.net 數(shù)據(jù)庫連接池淺析

    asp.net是默認(rèn)支持連接池的,所以關(guān)于張方面的介紹和談?wù)摱急容^少,查了一下msdn,有一下知識(shí)
    2010-03-03
  • .Net中如何將一個(gè)實(shí)例的內(nèi)存二進(jìn)制內(nèi)容讀出來(超簡單方法)

    .Net中如何將一個(gè)實(shí)例的內(nèi)存二進(jìn)制內(nèi)容讀出來(超簡單方法)

    這篇文章主要介紹了如何將一個(gè)實(shí)例的內(nèi)存二進(jìn)制內(nèi)容讀出來(超簡單方法),接下來的內(nèi)容中,我們將利用一個(gè)簡單的方法輸出指定實(shí)例的字節(jié)序列,并此次分析值類型和引用類型實(shí)例在內(nèi)存的布局,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

措勤县| 卢湾区| 泰和县| 泊头市| 浏阳市| 泗水县| 榆树市| 三明市| 西藏| 慈溪市| 光山县| 韩城市| 措美县| 张家港市| 庆云县| 逊克县| 楚雄市| 汉寿县| 芮城县| 纳雍县| 福海县| 宁国市| 嘉祥县| 水富县| 天津市| 田东县| 图们市| 诸城市| 施甸县| 讷河市| 繁昌县| 门头沟区| 聂拉木县| 澜沧| 大田县| 资兴市| 周口市| 钟祥市| 三明市| 偏关县| 武威市|