RazorPage:复杂Model绑定:自定义类型属性 / CheckboxList

更多
2020年07月01日 16点01分 作者:叶飞 修改

自定义类型属性


很多时候,我们在PageModel中会放置一个或多个自定义类型属性(又被称之为Model)



Register是一个自定义的类:


    public class Register
    {
        public string UserName { get; set; }
        public string Password { get; set; }
    }


这样的属性是怎么被绑定赋值的?

我们需要给FormData一个用点(.)分隔特殊格式的name:

  • 比如,Regiter.UserName。这样ASP.NET进行Model绑定时,会自动将其解析为:Register属性的UserName值。
  • 点(.)的层次没有限制,比如Register.User.Name会被解析为:Register属性中的User属性中的Name值。

@想一想@:为什么使用 input TagHelper 时,生成的原生HTML代码name是这样的值?


注意:TagHelper为我们的Model绑定带来了便利,但是

TagHelper本身 没有魔力,没有魔力,没有魔力!重要的事说三遍,^_^

一定要理解:TagHelper和Model绑定之间没有关系,没有TagHelper一样可以进行Model绑定


CheckboxList集合绑定


foreach和for



@for (int i = 0; i < Model.Options.Count; i++)
{
    <label>@i <input type="checkbox" asp-for="Options[i]" /></label><br />
}
在PageModel中声明:
    public IList<bool> Options { get; set; }


注意,不要使用foreach

@foreach (var item in Model.Options)
{
    <label><input type="checkbox" asp-for="@item" /></label><br />
}

需要

    public class Message
    {
        public int Id { get; set; }
        public bool Seleted { get; set; }
    }
对对对
@for (int i = 0; i < Model.Messages.Count; i++)
{
    <label>@i <input type="checkbox" asp-for="Messages[i].Seleted" /></label>
    <input asp-for="Messages[i].Id" type="hidden" />    
    <br />
}


Model绑定 原理 checkbox
赞: 0 踩: 0

打赏
已收到打赏的 帮帮币

你的 打赏 非常重要!
为了保证文章的质量,每一篇文章的发布,都已经消耗了作者 1 枚 帮帮币
没有“帮帮币”,作者无法发布新的文章。

全系列阅读
评论 / 0

ASP.NET


RazorPage

微软推荐的、最新的、基于Razor页面和.NET core的新一代Web项目开发技术,包括Razor Tag Helper、Model绑定和Validation、Session/Cookie、内置依赖注入等……

MVC

过去两年间最流行的、基于.NET Framework和MVC模式的ASP.NET MVC框架,主要用于讲解安全、性能、架构和各种实战功能演示……

其他Web项目

包括WebForm和WebApi

全部
关键字



帮助

反馈