HtmlHelper、TagHelper、局部视图、视图组件

本文介绍了如何在ASP.NET中使用HtmlHelper扩展方法实现换行,以及TagHelper组件的应用,还涵盖了局部视图、视图组件的创建和调用。重点讲解了前端开发和组件化的实践技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.HtmlHelper扩展方法:

public static class HtmlHelperEx
    {
        public static IHtmlContent Br(this IHtmlHelper helper)
        {
            return new HtmlString("</Br>");
        }
    }

在cshtml中使用@Html.Br();

2.TagHelper组件:

[HtmlTargetElement("Hello")]
    public class TagHelperTest:TagHelper
    {
        public string Name { get; set; }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "div";
            if(!string.IsNullOrEmpty(Name))
                output.Attributes.Add("name", Name);
            output.PreContent.SetContent("");
        }
    }

接着在_ViewImports.cshtml中注入,@addTagHelper *, WebApplicationStudy(@addTagHelper 组件名字,项目名字),其中*表示所有;在cshtml中使用<Hello Name="hello"></Hello>;

3. 局部视图,@Html.Partial("视图名字"),第二个参数可以使用model传值,@Html.Partial("视图名字",@model)

4.视图组件

(1)创建类,以ViewComponent结尾,继承ViewComponent类,如下:

 [ViewComponent(Name="CustomList")]
    public class ListViewComponent:ViewComponent
    {
        public async Task<IViewComponentResult> InvokeAsync(string name)
        {
            var result = await GetListPerson(name);

            return View(result);
        }

        private Task<List<Person>> GetListPerson(string name)
        {
            return Task.Run(() =>
             {
                 return new List<Person>
                 {
                    new Person
                    {
                        Id=1,
                        Name = name+1,
                    },
                    new Person
                    {
                        Id=2,
                        Name = name+2,
                    },
                    new Person
                    {
                        Id=3,
                        Name = name+3,
                    },
                    new Person
                    {
                        Id=4,
                        Name = name+4,
                    },
                 };
             });
        }
    }

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

如果 [ViewComponent(Name="CustomList")]没有指定,默认是类名除去ViewComponent部分;

(2)创建文件Shared/Components/CustomListDefault.cshtml,因为return View(result)默认找的地址,如果不默认,可以指定,例如:return View("~/Views/Test/Test.cshtml",result);

Shared/Components/CustomListDefault.cshtml代码如下:

@using WebApplicationStudy.Common
@model List<Person>

@foreach(var item in Model)
{
    <p id="@item.Id">@item.Name</p>
}

(3)最后在其它cshtml中使用:

@await Component.InvokeAsync("CustomList",new { name="123kk" })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值