ASP.NET Core 高级系列(一)【下】:模型绑定

2021-03-27 19:27

阅读:490

标签:Fix   名称   bsp   重写   字符   自定义   实例   sof   set   

简单类型

      模型绑定器能将源字符串转换为其本身的简单类型包含如下:      

  • Boolean
  • Byte, SByte
  • Char
  • DateTime
  • DateTimeOffset
  • Decimal
  • Double
  • Enum
  • Guid
  • Int16, Int32, Int64
  • Single
  • TimeSpan
  • UInt16, UInt32, UInt64
  • Uri
  • Version

复杂类型

       一个复杂类型必须有一个public 默认的构造函数以及一些public的可读写的属性用来进行绑定。当模型绑定发生时,复杂类型会用public 默认构造函数进行实例化。

       对于复杂类型的每个属性,模型绑定为名称模式 prefix.property_name 来查找源。如果没有找到,它便会查找property_name 而忽略前缀。

       对于绑定到一个参数来说,前缀将会是参数的名称。对于绑定到一个 PageModel public 属性来说,前缀将会是public 的属性名称。一些属性(attributes)会包含一个Prefix 属性,其允许你重写参数或者属性名的默认用法。

       举个例子,假设复杂类型是如下的Instructor 类:

public class Instructor
{
    public int ID { get; set; }
    public string LastName { get; set; }
    public string FirstName { get; set; }
}

       前缀 = 参数名

       如果将要绑定的模型是名为 instructorToUpdate 的参数:

public IActionResult OnPost(int? id, Instructor instructorToUpdate)

      模型绑定为键  instructorToUpdate.ID 来查找绑定源。如果没有找到,它将查找ID,而不带任何前缀。

      前缀 = 属性名

      如果将要被绑定的模型是名为控制器或者PageModel 类的 名为Instructor 的属性:

[BindProperty]
public Instructor Instructor { get; set; }

      模型绑定便为键 Instructor.ID 来寻找绑定源,如果没有找到,其便会查找 ID,而不带任何前缀。

      自定义前缀

      如果将要被绑定的模型是名为 instructorToUpdate 的参数并且 Bind 特性指定了 Instructor 作为前缀:

public IActionResult OnPost(
    int? id, [Bind(Prefix = "Instructor")] Instructor instructorToUpdate)

      模型绑定便会为键 Instructor.ID 查找绑定源。如果没有找到,它便会查找ID。

ASP.NET Core 高级系列(一)【下】:模型绑定

标签:Fix   名称   bsp   重写   字符   自定义   实例   sof   set   

原文地址:https://www.cnblogs.com/qianxingmu/p/12628904.html


评论


亲,登录后才可以留言!